{
  "contractName": "GenesisProtocolLogic",
  "abi": [
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "parameters",
      "outputs": [
        {
          "name": "queuedVoteRequiredPercentage",
          "type": "uint256"
        },
        {
          "name": "queuedVotePeriodLimit",
          "type": "uint256"
        },
        {
          "name": "boostedVotePeriodLimit",
          "type": "uint256"
        },
        {
          "name": "preBoostedVotePeriodLimit",
          "type": "uint256"
        },
        {
          "name": "thresholdConst",
          "type": "uint256"
        },
        {
          "name": "limitExponentValue",
          "type": "uint256"
        },
        {
          "name": "quietEndingPeriod",
          "type": "uint256"
        },
        {
          "name": "proposingRepReward",
          "type": "uint256"
        },
        {
          "name": "votersReputationLossRatio",
          "type": "uint256"
        },
        {
          "name": "minimumDaoBounty",
          "type": "uint256"
        },
        {
          "name": "daoBountyConst",
          "type": "uint256"
        },
        {
          "name": "activationTime",
          "type": "uint256"
        },
        {
          "name": "voteOnBehalf",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "NO",
      "outputs": [
        {
          "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": true,
      "inputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "proposals",
      "outputs": [
        {
          "name": "organizationId",
          "type": "bytes32"
        },
        {
          "name": "callbacks",
          "type": "address"
        },
        {
          "name": "state",
          "type": "uint8"
        },
        {
          "name": "winningVote",
          "type": "uint256"
        },
        {
          "name": "proposer",
          "type": "address"
        },
        {
          "name": "currentBoostedVotePeriodLimit",
          "type": "uint256"
        },
        {
          "name": "paramsHash",
          "type": "bytes32"
        },
        {
          "name": "daoBountyRemain",
          "type": "uint256"
        },
        {
          "name": "daoBounty",
          "type": "uint256"
        },
        {
          "name": "totalStakes",
          "type": "uint256"
        },
        {
          "name": "confidenceThreshold",
          "type": "uint256"
        },
        {
          "name": "expirationCallBountyPercentage",
          "type": "uint256"
        },
        {
          "name": "daoRedeemItsWinnings",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "name": "_vote",
          "type": "uint256"
        },
        {
          "name": "_rep",
          "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": true,
      "inputs": [],
      "name": "stakingToken",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "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": "NUM_OF_CHOICES",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "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": "YES",
      "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": "",
          "type": "bytes32"
        }
      ],
      "name": "averagesDownstakesOfBoosted",
      "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": "",
          "type": "bytes32"
        }
      ],
      "name": "orgBoostedProposalsCnt",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_stakingToken",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "name": "_organization",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "_staker",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_vote",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "Stake",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "name": "_organization",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "Redeem",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "name": "_organization",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "RedeemDaoBounty",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "name": "_organization",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "RedeemReputation",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "_proposalState",
          "type": "uint8"
        }
      ],
      "name": "StateChange",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "_executionState",
          "type": "uint8"
        }
      ],
      "name": "GPExecuteProposal",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "ExpirationCallBounty",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "_confidenceThreshold",
          "type": "uint256"
        }
      ],
      "name": "ConfidenceLevelChange",
      "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": "",
          "type": "uint256"
        },
        {
          "name": "_paramsHash",
          "type": "bytes32"
        },
        {
          "name": "_proposer",
          "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": "executeBoosted",
      "outputs": [
        {
          "name": "expirationCallBounty",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_params",
          "type": "uint256[11]"
        },
        {
          "name": "_voteOnBehalf",
          "type": "address"
        }
      ],
      "name": "setParameters",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "name": "_beneficiary",
          "type": "address"
        }
      ],
      "name": "redeem",
      "outputs": [
        {
          "name": "rewards",
          "type": "uint256[3]"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "name": "_beneficiary",
          "type": "address"
        }
      ],
      "name": "redeemDaoBounty",
      "outputs": [
        {
          "name": "redeemedAmount",
          "type": "uint256"
        },
        {
          "name": "potentialAmount",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "shouldBoost",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_paramsHash",
          "type": "bytes32"
        },
        {
          "name": "_organizationId",
          "type": "bytes32"
        }
      ],
      "name": "threshold",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_params",
          "type": "uint256[11]"
        },
        {
          "name": "_voteOnBehalf",
          "type": "address"
        }
      ],
      "name": "getParametersHash",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "metadata": "",
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "sourceMap": "",
  "deployedSourceMap": "",
  "source": "pragma solidity ^0.5.4;\n\nimport \"./IntVoteInterface.sol\";\nimport { RealMath } from \"../libs/RealMath.sol\";\nimport \"./VotingMachineCallbacksInterface.sol\";\nimport \"./ProposalExecuteInterface.sol\";\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\nimport \"openzeppelin-solidity/contracts/math/Math.sol\";\nimport \"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\";\nimport \"openzeppelin-solidity/contracts/utils/Address.sol\";\n\n\n\n/**\n * @title GenesisProtocol implementation -an organization's voting machine scheme.\n */\ncontract GenesisProtocolLogic is IntVoteInterface {\n    using SafeMath for uint256;\n    using Math for uint256;\n    using RealMath for uint216;\n    using RealMath for uint256;\n    using Address for address;\n\n    enum ProposalState { None, ExpiredInQueue, Executed, Queued, PreBoosted, Boosted, QuietEndingPeriod}\n    enum ExecutionState { None, QueueBarCrossed, QueueTimeOut, PreBoostedBarCrossed, BoostedTimeOut, BoostedBarCrossed}\n\n    //Organization's parameters\n    struct Parameters {\n        uint256 queuedVoteRequiredPercentage; // the absolute vote percentages bar.\n        uint256 queuedVotePeriodLimit; //the time limit for a proposal to be in an absolute voting mode.\n        uint256 boostedVotePeriodLimit; //the time limit for a proposal to be in boost mode.\n        uint256 preBoostedVotePeriodLimit; //the time limit for a proposal\n                                          //to be in an preparation state (stable) before boosted.\n        uint256 thresholdConst; //constant  for threshold calculation .\n                                //threshold =thresholdConst ** (numberOfBoostedProposals)\n        uint256 limitExponentValue;// an upper limit for numberOfBoostedProposals\n                                   //in the threshold calculation to prevent overflow\n        uint256 quietEndingPeriod; //quite ending period\n        uint256 proposingRepReward;//proposer reputation reward.\n        uint256 votersReputationLossRatio;//Unsuccessful pre booster\n                                          //voters lose votersReputationLossRatio% of their reputation.\n        uint256 minimumDaoBounty;\n        uint256 daoBountyConst;//The DAO downstake for each proposal is calculate according to the formula\n                               //(daoBountyConst * averageBoostDownstakes)/100 .\n        uint256 activationTime;//the point in time after which proposals can be created.\n        //if this address is set so only this address is allowed to vote of behalf of someone else.\n        address voteOnBehalf;\n    }\n\n    struct Voter {\n        uint256 vote; // YES(1) ,NO(2)\n        uint256 reputation; // amount of voter's reputation\n        bool preBoosted;\n    }\n\n    struct Staker {\n        uint256 vote; // YES(1) ,NO(2)\n        uint256 amount; // amount of staker's stake\n        uint256 amount4Bounty;// amount of staker's stake used for bounty reward calculation.\n    }\n\n    struct Proposal {\n        bytes32 organizationId; // the organization unique identifier the proposal is target to.\n        address callbacks;    // should fulfill voting callbacks interface.\n        ProposalState state;\n        uint256 winningVote; //the winning vote.\n        address proposer;\n        //the proposal boosted period limit . it is updated for the case of quiteWindow mode.\n        uint256 currentBoostedVotePeriodLimit;\n        bytes32 paramsHash;\n        uint256 daoBountyRemain; //use for checking sum zero bounty claims.it is set at the proposing time.\n        uint256 daoBounty;\n        uint256 totalStakes;// Total number of tokens staked which can be redeemable by stakers.\n        uint256 confidenceThreshold;\n        //The percentage from upper stakes which the caller for the expiration was given.\n        uint256 expirationCallBountyPercentage;\n        uint[3] times; //times[0] - submittedTime\n                       //times[1] - boostedPhaseTime\n                       //times[2] -preBoostedPhaseTime;\n        bool daoRedeemItsWinnings;\n        //      vote      reputation\n        mapping(uint256   =>  uint256    ) votes;\n        //      vote      reputation\n        mapping(uint256   =>  uint256    ) preBoostedVotes;\n        //      address     voter\n        mapping(address =>  Voter    ) voters;\n        //      vote        stakes\n        mapping(uint256   =>  uint256    ) stakes;\n        //      address  staker\n        mapping(address  => Staker   ) stakers;\n    }\n\n    event Stake(bytes32 indexed _proposalId,\n        address indexed _organization,\n        address indexed _staker,\n        uint256 _vote,\n        uint256 _amount\n    );\n\n    event Redeem(bytes32 indexed _proposalId,\n        address indexed _organization,\n        address indexed _beneficiary,\n        uint256 _amount\n    );\n\n    event RedeemDaoBounty(bytes32 indexed _proposalId,\n        address indexed _organization,\n        address indexed _beneficiary,\n        uint256 _amount\n    );\n\n    event RedeemReputation(bytes32 indexed _proposalId,\n        address indexed _organization,\n        address indexed _beneficiary,\n        uint256 _amount\n    );\n\n    event StateChange(bytes32 indexed _proposalId, ProposalState _proposalState);\n    event GPExecuteProposal(bytes32 indexed _proposalId, ExecutionState _executionState);\n    event ExpirationCallBounty(bytes32 indexed _proposalId, address indexed _beneficiary, uint256 _amount);\n    event ConfidenceLevelChange(bytes32 indexed _proposalId, uint256 _confidenceThreshold);\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=>uint) public orgBoostedProposalsCnt;\n           //organizationId => organization\n    mapping(bytes32        => address     ) public organizations;\n          //organizationId => averageBoostDownstakes\n    mapping(bytes32           => uint256              ) public averagesDownstakesOfBoosted;\n    uint256 constant public NUM_OF_CHOICES = 2;\n    uint256 constant public NO = 2;\n    uint256 constant public YES = 1;\n    uint256 public proposalsCnt; // Total number of proposals\n    IERC20 public stakingToken;\n    address constant private GEN_TOKEN_ADDRESS = 0x543Ff227F64Aa17eA132Bf9886cAb5DB55DCAddf;\n    uint256 constant private MAX_BOOSTED_PROPOSALS = 4096;\n\n    /**\n     * @dev Constructor\n     */\n    constructor(IERC20 _stakingToken) public {\n      //The GEN token (staking token) address is hard coded in the contract by GEN_TOKEN_ADDRESS .\n      //This will work for a network which already hosted the GEN token on this address (e.g mainnet).\n      //If such contract address does not exist in the network (e.g ganache)\n      //the contract will use the _stakingToken param as the\n      //staking token address.\n        if (address(GEN_TOKEN_ADDRESS).isContract()) {\n            stakingToken = IERC20(GEN_TOKEN_ADDRESS);\n        } else {\n            stakingToken = _stakingToken;\n        }\n    }\n\n  /**\n   * @dev Check that the proposal is votable\n   * a proposal is votable if it is in one of the following states:\n   *  PreBoosted,Boosted,QuietEndingPeriod or Queued\n   */\n    modifier votable(bytes32 _proposalId) {\n        require(_isVotable(_proposalId));\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 _paramsHash parameters hash\n     * @param _proposer address\n     * @param _organization address\n     */\n    function propose(uint256, bytes32 _paramsHash, address _proposer, address _organization)\n        external\n        returns(bytes32)\n    {\n      // solhint-disable-next-line not-rely-on-time\n        require(now > parameters[_paramsHash].activationTime, \"not active yet\");\n        //Check parameters existence.\n        require(parameters[_paramsHash].queuedVoteRequiredPercentage >= 50);\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.callbacks = msg.sender;\n        proposal.organizationId = keccak256(abi.encodePacked(msg.sender, _organization));\n\n        proposal.state = ProposalState.Queued;\n        // solhint-disable-next-line not-rely-on-time\n        proposal.times[0] = now;//submitted time\n        proposal.currentBoostedVotePeriodLimit = parameters[_paramsHash].boostedVotePeriodLimit;\n        proposal.proposer = _proposer;\n        proposal.winningVote = NO;\n        proposal.paramsHash = _paramsHash;\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        //calc dao bounty\n        uint256 daoBounty =\n        parameters[_paramsHash].daoBountyConst.mul(averagesDownstakesOfBoosted[proposal.organizationId]).div(100);\n        if (daoBounty < parameters[_paramsHash].minimumDaoBounty) {\n            proposal.daoBountyRemain = parameters[_paramsHash].minimumDaoBounty;\n        } else {\n            proposal.daoBountyRemain = daoBounty;\n        }\n        proposal.totalStakes = proposal.daoBountyRemain;\n        proposals[proposalId] = proposal;\n        proposals[proposalId].stakes[NO] = proposal.daoBountyRemain;//dao downstake on the proposal\n\n        emit NewProposal(proposalId, organizations[proposal.organizationId], NUM_OF_CHOICES, _proposer, _paramsHash);\n        return proposalId;\n    }\n\n    /**\n      * @dev executeBoosted try to execute a boosted or QuietEndingPeriod proposal if it is expired\n      * @param _proposalId the id of the proposal\n      * @return uint256 expirationCallBounty the bounty amount for the expiration call\n     */\n    function executeBoosted(bytes32 _proposalId) external returns(uint256 expirationCallBounty) {\n        Proposal storage proposal = proposals[_proposalId];\n        require(proposal.state == ProposalState.Boosted || proposal.state == ProposalState.QuietEndingPeriod,\n        \"proposal state in not Boosted nor QuietEndingPeriod\");\n        require(_execute(_proposalId), \"proposal need to expire\");\n        uint256 expirationCallBountyPercentage =\n        // solhint-disable-next-line not-rely-on-time\n        (uint(1).add(now.sub(proposal.currentBoostedVotePeriodLimit.add(proposal.times[1])).div(15)));\n        if (expirationCallBountyPercentage > 100) {\n            expirationCallBountyPercentage = 100;\n        }\n        proposal.expirationCallBountyPercentage = expirationCallBountyPercentage;\n        expirationCallBounty = expirationCallBountyPercentage.mul(proposal.stakes[YES]).div(100);\n        require(stakingToken.transfer(msg.sender, expirationCallBounty), \"transfer to msg.sender failed\");\n        emit ExpirationCallBounty(_proposalId, msg.sender, expirationCallBounty);\n    }\n\n    /**\n     * @dev hash the parameters, save them if necessary, and return the hash value\n     * @param _params a parameters array\n     *    _params[0] - _queuedVoteRequiredPercentage,\n     *    _params[1] - _queuedVotePeriodLimit, //the time limit for a proposal to be in an absolute voting mode.\n     *    _params[2] - _boostedVotePeriodLimit, //the time limit for a proposal to be in an relative voting mode.\n     *    _params[3] - _preBoostedVotePeriodLimit, //the time limit for a proposal to be in an preparation\n     *                  state (stable) before boosted.\n     *    _params[4] -_thresholdConst\n     *    _params[5] -_quietEndingPeriod\n     *    _params[6] -_proposingRepReward\n     *    _params[7] -_votersReputationLossRatio\n     *    _params[8] -_minimumDaoBounty\n     *    _params[9] -_daoBountyConst\n     *    _params[10] -_activationTime\n     * @param _voteOnBehalf - authorized to vote on behalf of others.\n    */\n    function setParameters(\n        uint[11] calldata _params, //use array here due to stack too deep issue.\n        address _voteOnBehalf\n    )\n    external\n    returns(bytes32)\n    {\n        require(_params[0] <= 100 && _params[0] >= 50, \"50 <= queuedVoteRequiredPercentage <= 100\");\n        require(_params[4] <= 16000 && _params[4] > 1000, \"1000 < thresholdConst <= 16000\");\n        require(_params[7] <= 100, \"votersReputationLossRatio <= 100\");\n        require(_params[2] >= _params[5], \"boostedVotePeriodLimit >= quietEndingPeriod\");\n        require(_params[8] > 0, \"minimumDaoBounty should be > 0\");\n        require(_params[9] > 0, \"daoBountyConst should be > 0\");\n\n        bytes32 paramsHash = getParametersHash(_params, _voteOnBehalf);\n        //set a limit for power for a given alpha to prevent overflow\n        uint256 limitExponent = 172;//for alpha less or equal 2\n        uint256 j = 2;\n        for (uint256 i = 2000; i < 16000; i = i*2) {\n            if ((_params[4] > i) && (_params[4] <= i*2)) {\n                limitExponent = limitExponent/j;\n                break;\n            }\n            j++;\n        }\n\n        parameters[paramsHash] = Parameters({\n            queuedVoteRequiredPercentage: _params[0],\n            queuedVotePeriodLimit: _params[1],\n            boostedVotePeriodLimit: _params[2],\n            preBoostedVotePeriodLimit: _params[3],\n            thresholdConst:uint216(_params[4]).fraction(uint216(1000)),\n            limitExponentValue:limitExponent,\n            quietEndingPeriod: _params[5],\n            proposingRepReward: _params[6],\n            votersReputationLossRatio:_params[7],\n            minimumDaoBounty:_params[8],\n            daoBountyConst:_params[9],\n            activationTime:_params[10],\n            voteOnBehalf:_voteOnBehalf\n        });\n        return paramsHash;\n    }\n\n    /**\n     * @dev redeem a reward for a successful stake, vote or proposing.\n     * The function use a beneficiary address as a parameter (and not msg.sender) to enable\n     * users to redeem on behalf of someone else.\n     * @param _proposalId the ID of the proposal\n     * @param _beneficiary - the beneficiary address\n     * @return rewards -\n     *           [0] stakerTokenReward\n     *           [1] voterReputationReward\n     *           [2] proposerReputationReward\n     */\n     // solhint-disable-next-line function-max-lines,code-complexity\n    function redeem(bytes32 _proposalId, address _beneficiary) public returns (uint[3] memory rewards) {\n        Proposal storage proposal = proposals[_proposalId];\n        require((proposal.state == ProposalState.Executed)||(proposal.state == ProposalState.ExpiredInQueue),\n        \"Proposal should be Executed or ExpiredInQueue\");\n        Parameters memory params = parameters[proposal.paramsHash];\n        uint256 lostReputation;\n        if (proposal.winningVote == YES) {\n            lostReputation = proposal.preBoostedVotes[NO];\n        } else {\n            lostReputation = proposal.preBoostedVotes[YES];\n        }\n        lostReputation = (lostReputation.mul(params.votersReputationLossRatio))/100;\n        //as staker\n        Staker storage staker = proposal.stakers[_beneficiary];\n        uint256 totalStakes = proposal.stakes[NO].add(proposal.stakes[YES]);\n        uint256 totalWinningStakes = proposal.stakes[proposal.winningVote];\n\n        if (staker.amount > 0) {\n            uint256 totalStakesLeftAfterCallBounty =\n            totalStakes.sub(proposal.expirationCallBountyPercentage.mul(proposal.stakes[YES]).div(100));\n            if (proposal.state == ProposalState.ExpiredInQueue) {\n                //Stakes of a proposal that expires in Queue are sent back to stakers\n                rewards[0] = staker.amount;\n            } else if (staker.vote == proposal.winningVote) {\n                if (staker.vote == YES) {\n                    if (proposal.daoBounty < totalStakesLeftAfterCallBounty) {\n                        uint256 _totalStakes = totalStakesLeftAfterCallBounty.sub(proposal.daoBounty);\n                        rewards[0] = (staker.amount.mul(_totalStakes))/totalWinningStakes;\n                    }\n                } else {\n                    rewards[0] = (staker.amount.mul(totalStakesLeftAfterCallBounty))/totalWinningStakes;\n                }\n            }\n            staker.amount = 0;\n        }\n            //dao redeem its winnings\n        if (proposal.daoRedeemItsWinnings == false &&\n            _beneficiary == organizations[proposal.organizationId] &&\n            proposal.state != ProposalState.ExpiredInQueue &&\n            proposal.winningVote == NO) {\n            rewards[0] =\n            rewards[0].add((proposal.daoBounty.mul(totalStakes))/totalWinningStakes).sub(proposal.daoBounty);\n            proposal.daoRedeemItsWinnings = true;\n        }\n\n        //as voter\n        Voter storage voter = proposal.voters[_beneficiary];\n        if ((voter.reputation != 0) && (voter.preBoosted)) {\n            if (proposal.state == ProposalState.ExpiredInQueue) {\n              //give back reputation for the voter\n                rewards[1] = ((voter.reputation.mul(params.votersReputationLossRatio))/100);\n            } else if (proposal.winningVote == voter.vote) {\n                rewards[1] = ((voter.reputation.mul(params.votersReputationLossRatio))/100)\n                .add((voter.reputation.mul(lostReputation))/proposal.preBoostedVotes[proposal.winningVote]);\n            }\n            voter.reputation = 0;\n        }\n        //as proposer\n        if ((proposal.proposer == _beneficiary)&&(proposal.winningVote == YES)&&(proposal.proposer != address(0))) {\n            rewards[2] = params.proposingRepReward;\n            proposal.proposer = address(0);\n        }\n        if (rewards[0] != 0) {\n            proposal.totalStakes = proposal.totalStakes.sub(rewards[0]);\n            require(stakingToken.transfer(_beneficiary, rewards[0]), \"transfer to beneficiary failed\");\n            emit Redeem(_proposalId, organizations[proposal.organizationId], _beneficiary, rewards[0]);\n        }\n        if (rewards[1].add(rewards[2]) != 0) {\n            VotingMachineCallbacksInterface(proposal.callbacks)\n            .mintReputation(rewards[1].add(rewards[2]), _beneficiary, _proposalId);\n            emit RedeemReputation(\n            _proposalId,\n            organizations[proposal.organizationId],\n            _beneficiary,\n            rewards[1].add(rewards[2])\n            );\n        }\n    }\n\n    /**\n     * @dev redeemDaoBounty a reward for a successful stake.\n     * The function use a beneficiary address as a parameter (and not msg.sender) to enable\n     * users to redeem on behalf of someone else.\n     * @param _proposalId the ID of the proposal\n     * @param _beneficiary - the beneficiary address\n     * @return redeemedAmount - redeem token amount\n     * @return potentialAmount - potential redeem token amount(if there is enough tokens bounty at the organization )\n     */\n    function redeemDaoBounty(bytes32 _proposalId, address _beneficiary)\n    public\n    returns(uint256 redeemedAmount, uint256 potentialAmount) {\n        Proposal storage proposal = proposals[_proposalId];\n        require(proposal.state == ProposalState.Executed);\n        uint256 totalWinningStakes = proposal.stakes[proposal.winningVote];\n        Staker storage staker = proposal.stakers[_beneficiary];\n        if (\n            (staker.amount4Bounty > 0)&&\n            (staker.vote == proposal.winningVote)&&\n            (proposal.winningVote == YES)&&\n            (totalWinningStakes != 0)) {\n            //as staker\n                potentialAmount = (staker.amount4Bounty * proposal.daoBounty)/totalWinningStakes;\n            }\n        if ((potentialAmount != 0)&&\n            (VotingMachineCallbacksInterface(proposal.callbacks)\n            .balanceOfStakingToken(stakingToken, _proposalId) >= potentialAmount)) {\n            staker.amount4Bounty = 0;\n            proposal.daoBountyRemain = proposal.daoBountyRemain.sub(potentialAmount);\n            require(\n            VotingMachineCallbacksInterface(proposal.callbacks)\n            .stakingTokenTransfer(stakingToken, _beneficiary, potentialAmount, _proposalId));\n            redeemedAmount = potentialAmount;\n            emit RedeemDaoBounty(_proposalId, organizations[proposal.organizationId], _beneficiary, redeemedAmount);\n        }\n    }\n\n    /**\n     * @dev shouldBoost check if a proposal should be shifted to boosted phase.\n     * @param _proposalId the ID of the proposal\n     * @return bool true or false.\n     */\n    function shouldBoost(bytes32 _proposalId) public view returns(bool) {\n        Proposal memory proposal = proposals[_proposalId];\n        return (_score(_proposalId) > threshold(proposal.paramsHash, proposal.organizationId));\n    }\n\n    /**\n     * @dev threshold return the organization's score threshold which required by\n     * a proposal to shift to boosted state.\n     * This threshold is dynamically set and it depend on the number of boosted proposal.\n     * @param _organizationId the organization identifier\n     * @param _paramsHash the organization parameters hash\n     * @return uint256 organization's score threshold as real number.\n     */\n    function threshold(bytes32 _paramsHash, bytes32 _organizationId) public view returns(uint256) {\n        uint256 power = orgBoostedProposalsCnt[_organizationId];\n        Parameters storage params = parameters[_paramsHash];\n\n        if (power > params.limitExponentValue) {\n            power = params.limitExponentValue;\n        }\n\n        return params.thresholdConst.pow(power);\n    }\n\n  /**\n   * @dev hashParameters returns a hash of the given parameters\n   */\n    function getParametersHash(\n        uint[11] memory _params,//use array here due to stack too deep issue.\n        address _voteOnBehalf\n    )\n        public\n        pure\n        returns(bytes32)\n        {\n        //double call to keccak256 to avoid deep stack issue when call with too many params.\n        return keccak256(\n            abi.encodePacked(\n            keccak256(\n            abi.encodePacked(\n                _params[0],\n                _params[1],\n                _params[2],\n                _params[3],\n                _params[4],\n                _params[5],\n                _params[6],\n                _params[7],\n                _params[8],\n                _params[9],\n                _params[10])\n            ),\n            _voteOnBehalf\n        ));\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     // solhint-disable-next-line function-max-lines,code-complexity\n    function _execute(bytes32 _proposalId) internal votable(_proposalId) returns(bool) {\n        Proposal storage proposal = proposals[_proposalId];\n        Parameters memory params = parameters[proposal.paramsHash];\n        Proposal memory tmpProposal = proposal;\n        uint256 totalReputation =\n        VotingMachineCallbacksInterface(proposal.callbacks).getTotalReputationSupply(_proposalId);\n        //first divide by 100 to prevent overflow\n        uint256 executionBar = (totalReputation/100) * params.queuedVoteRequiredPercentage;\n        ExecutionState executionState = ExecutionState.None;\n        uint256 averageDownstakesOfBoosted;\n        uint256 confidenceThreshold;\n\n        if (proposal.votes[proposal.winningVote] > executionBar) {\n         // someone crossed the absolute vote execution bar.\n            if (proposal.state == ProposalState.Queued) {\n                executionState = ExecutionState.QueueBarCrossed;\n            } else if (proposal.state == ProposalState.PreBoosted) {\n                executionState = ExecutionState.PreBoostedBarCrossed;\n            } else {\n                executionState = ExecutionState.BoostedBarCrossed;\n            }\n            proposal.state = ProposalState.Executed;\n        } else {\n            if (proposal.state == ProposalState.Queued) {\n                // solhint-disable-next-line not-rely-on-time\n                if ((now - proposal.times[0]) >= params.queuedVotePeriodLimit) {\n                    proposal.state = ProposalState.ExpiredInQueue;\n                    proposal.winningVote = NO;\n                    executionState = ExecutionState.QueueTimeOut;\n                } else {\n                    confidenceThreshold = threshold(proposal.paramsHash, proposal.organizationId);\n                    if (_score(_proposalId) > confidenceThreshold) {\n                        //change proposal mode to PreBoosted mode.\n                        proposal.state = ProposalState.PreBoosted;\n                        // solhint-disable-next-line not-rely-on-time\n                        proposal.times[2] = now;\n                        proposal.confidenceThreshold = confidenceThreshold;\n                    }\n                }\n            }\n\n            if (proposal.state == ProposalState.PreBoosted) {\n                confidenceThreshold = threshold(proposal.paramsHash, proposal.organizationId);\n              // solhint-disable-next-line not-rely-on-time\n                if ((now - proposal.times[2]) >= params.preBoostedVotePeriodLimit) {\n                    if (_score(_proposalId) > confidenceThreshold) {\n                        if (orgBoostedProposalsCnt[proposal.organizationId] < MAX_BOOSTED_PROPOSALS) {\n                         //change proposal mode to Boosted mode.\n                            proposal.state = ProposalState.Boosted;\n                         // solhint-disable-next-line not-rely-on-time\n                            proposal.times[1] = now;\n                            orgBoostedProposalsCnt[proposal.organizationId]++;\n                         //add a value to average -> average = average + ((value - average) / nbValues)\n                            averageDownstakesOfBoosted = averagesDownstakesOfBoosted[proposal.organizationId];\n                          // solium-disable-next-line indentation\n                            averagesDownstakesOfBoosted[proposal.organizationId] =\n                                uint256(int256(averageDownstakesOfBoosted) +\n                                ((int256(proposal.stakes[NO])-int256(averageDownstakesOfBoosted))/\n                                int256(orgBoostedProposalsCnt[proposal.organizationId])));\n                        }\n                    } else {\n                        proposal.state = ProposalState.Queued;\n                    }\n                } else { //check the Confidence level is stable\n                    uint256 proposalScore = _score(_proposalId);\n                    if (proposalScore <= proposal.confidenceThreshold.min(confidenceThreshold)) {\n                        proposal.state = ProposalState.Queued;\n                    } else if (proposal.confidenceThreshold > proposalScore) {\n                        proposal.confidenceThreshold = confidenceThreshold;\n                        emit ConfidenceLevelChange(_proposalId, confidenceThreshold);\n                    }\n                }\n            }\n        }\n\n        if ((proposal.state == ProposalState.Boosted) ||\n            (proposal.state == ProposalState.QuietEndingPeriod)) {\n            // solhint-disable-next-line not-rely-on-time\n            if ((now - proposal.times[1]) >= proposal.currentBoostedVotePeriodLimit) {\n                proposal.state = ProposalState.Executed;\n                executionState = ExecutionState.BoostedTimeOut;\n            }\n        }\n\n        if (executionState != ExecutionState.None) {\n            if ((executionState == ExecutionState.BoostedTimeOut) ||\n                (executionState == ExecutionState.BoostedBarCrossed)) {\n                orgBoostedProposalsCnt[tmpProposal.organizationId] =\n                orgBoostedProposalsCnt[tmpProposal.organizationId].sub(1);\n                //remove a value from average = ((average * nbValues) - value) / (nbValues - 1);\n                uint256 boostedProposals = orgBoostedProposalsCnt[tmpProposal.organizationId];\n                if (boostedProposals == 0) {\n                    averagesDownstakesOfBoosted[proposal.organizationId] = 0;\n                } else {\n                    averageDownstakesOfBoosted = averagesDownstakesOfBoosted[proposal.organizationId];\n                    averagesDownstakesOfBoosted[proposal.organizationId] =\n                    (averageDownstakesOfBoosted.mul(boostedProposals+1).sub(proposal.stakes[NO]))/boostedProposals;\n                }\n            }\n            emit ExecuteProposal(\n            _proposalId,\n            organizations[proposal.organizationId],\n            proposal.winningVote,\n            totalReputation\n            );\n            emit GPExecuteProposal(_proposalId, executionState);\n            ProposalExecuteInterface(proposal.callbacks).executeProposal(_proposalId, int(proposal.winningVote));\n            proposal.daoBounty = proposal.daoBountyRemain;\n        }\n        if (tmpProposal.state != proposal.state) {\n            emit StateChange(_proposalId, proposal.state);\n        }\n        return (executionState != ExecutionState.None);\n    }\n\n    /**\n     * @dev staking function\n     * @param _proposalId id of the proposal\n     * @param _vote  NO(2) or YES(1).\n     * @param _amount the betting amount\n     * @return bool true - the proposal has been executed\n     *              false - otherwise.\n     */\n    function _stake(bytes32 _proposalId, uint256 _vote, uint256 _amount, address _staker) internal returns(bool) {\n        // 0 is not a valid vote.\n        require(_vote <= NUM_OF_CHOICES && _vote > 0, \"wrong vote value\");\n        require(_amount > 0, \"staking amount should be >0\");\n\n        if (_execute(_proposalId)) {\n            return true;\n        }\n        Proposal storage proposal = proposals[_proposalId];\n\n        if ((proposal.state != ProposalState.PreBoosted) &&\n            (proposal.state != ProposalState.Queued)) {\n            return false;\n        }\n\n        // enable to increase stake only on the previous stake vote\n        Staker storage staker = proposal.stakers[_staker];\n        if ((staker.amount > 0) && (staker.vote != _vote)) {\n            return false;\n        }\n\n        uint256 amount = _amount;\n        require(stakingToken.transferFrom(_staker, address(this), amount), \"fail transfer from staker\");\n        proposal.totalStakes = proposal.totalStakes.add(amount); //update totalRedeemableStakes\n        staker.amount = staker.amount.add(amount);\n        //This is to prevent average downstakes calculation overflow\n        //Note that any how GEN cap is 100000000 ether.\n        require(staker.amount <= 0x100000000000000000000000000000000, \"staking amount is too high\");\n        require(proposal.totalStakes <= 0x100000000000000000000000000000000, \"total stakes is too high\");\n\n        if (_vote == YES) {\n            staker.amount4Bounty = staker.amount4Bounty.add(amount);\n        }\n        staker.vote = _vote;\n\n        proposal.stakes[_vote] = amount.add(proposal.stakes[_vote]);\n        emit Stake(_proposalId, organizations[proposal.organizationId], _staker, _vote, _amount);\n        return _execute(_proposalId);\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     * @param _rep how many reputation the voter would like to stake for this vote.\n     *         if  _rep==0 so the voter full reputation will be use.\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     // solhint-disable-next-line function-max-lines,code-complexity\n    function internalVote(bytes32 _proposalId, address _voter, uint256 _vote, uint256 _rep) internal returns(bool) {\n        require(_vote <= NUM_OF_CHOICES && _vote > 0, \"0 < _vote <= 2\");\n        if (_execute(_proposalId)) {\n            return true;\n        }\n\n        Parameters memory params = parameters[proposals[_proposalId].paramsHash];\n        Proposal storage proposal = proposals[_proposalId];\n\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, \"reputation >= _rep\");\n        uint256 rep = _rep;\n        if (rep == 0) {\n            rep = reputation;\n        }\n        // If this voter has already voted, return false.\n        if (proposal.voters[_voter].reputation != 0) {\n            return false;\n        }\n        // The voting itself:\n        proposal.votes[_vote] = rep.add(proposal.votes[_vote]);\n        //check if the current winningVote changed or there is a tie.\n        //for the case there is a tie the current winningVote set to NO.\n        if ((proposal.votes[_vote] > proposal.votes[proposal.winningVote]) ||\n            ((proposal.votes[NO] == proposal.votes[proposal.winningVote]) &&\n            proposal.winningVote == YES)) {\n            if (proposal.state == ProposalState.Boosted &&\n            // solhint-disable-next-line not-rely-on-time\n                ((now - proposal.times[1]) >= (params.boostedVotePeriodLimit - params.quietEndingPeriod))||\n                proposal.state == ProposalState.QuietEndingPeriod) {\n                //quietEndingPeriod\n                if (proposal.state != ProposalState.QuietEndingPeriod) {\n                    proposal.currentBoostedVotePeriodLimit = params.quietEndingPeriod;\n                    proposal.state = ProposalState.QuietEndingPeriod;\n                }\n                // solhint-disable-next-line not-rely-on-time\n                proposal.times[1] = now;\n            }\n            proposal.winningVote = _vote;\n        }\n        proposal.voters[_voter] = Voter({\n            reputation: rep,\n            vote: _vote,\n            preBoosted:((proposal.state == ProposalState.PreBoosted) || (proposal.state == ProposalState.Queued))\n        });\n        if ((proposal.state == ProposalState.PreBoosted) || (proposal.state == ProposalState.Queued)) {\n            proposal.preBoostedVotes[_vote] = rep.add(proposal.preBoostedVotes[_vote]);\n            uint256 reputationDeposit = (params.votersReputationLossRatio.mul(rep))/100;\n            VotingMachineCallbacksInterface(proposal.callbacks).burnReputation(reputationDeposit, _voter, _proposalId);\n        }\n        emit VoteProposal(_proposalId, organizations[proposal.organizationId], _voter, _vote, rep);\n        return _execute(_proposalId);\n    }\n\n    /**\n     * @dev _score return the proposal score (Confidence level)\n     * For dual choice proposal S = (S+)/(S-)\n     * @param _proposalId the ID of the proposal\n     * @return uint256 proposal score as real number.\n     */\n    function _score(bytes32 _proposalId) internal view returns(uint256) {\n        Proposal storage proposal = proposals[_proposalId];\n        //proposal.stakes[NO] cannot be zero as the dao downstake > 0 for each proposal.\n        return uint216(proposal.stakes[YES]).fraction(uint216(proposal.stakes[NO]));\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) internal view returns(bool) {\n        ProposalState pState = proposals[_proposalId].state;\n        return ((pState == ProposalState.PreBoosted)||\n                (pState == ProposalState.Boosted)||\n                (pState == ProposalState.QuietEndingPeriod)||\n                (pState == ProposalState.Queued)\n        );\n    }\n}\n",
  "sourcePath": "@daostack/infra/contracts/votingMachines/GenesisProtocolLogic.sol",
  "ast": {
    "absolutePath": "@daostack/infra/contracts/votingMachines/GenesisProtocolLogic.sol",
    "exportedSymbols": {
      "GenesisProtocolLogic": [
        15047
      ]
    },
    "id": 15048,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 12480,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".4"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:57"
      },
      {
        "absolutePath": "@daostack/infra/contracts/votingMachines/IntVoteInterface.sol",
        "file": "./IntVoteInterface.sol",
        "id": 12481,
        "nodeType": "ImportDirective",
        "scope": 15048,
        "sourceUnit": 15183,
        "src": "25:32:57",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@daostack/infra/contracts/libs/RealMath.sol",
        "file": "../libs/RealMath.sol",
        "id": 12483,
        "nodeType": "ImportDirective",
        "scope": 15048,
        "sourceUnit": 11189,
        "src": "58:48:57",
        "symbolAliases": [
          {
            "foreign": 12482,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "@daostack/infra/contracts/votingMachines/VotingMachineCallbacksInterface.sol",
        "file": "./VotingMachineCallbacksInterface.sol",
        "id": 12484,
        "nodeType": "ImportDirective",
        "scope": 15048,
        "sourceUnit": 15259,
        "src": "107:47:57",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@daostack/infra/contracts/votingMachines/ProposalExecuteInterface.sol",
        "file": "./ProposalExecuteInterface.sol",
        "id": 12485,
        "nodeType": "ImportDirective",
        "scope": 15048,
        "sourceUnit": 15195,
        "src": "155:40:57",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "id": 12486,
        "nodeType": "ImportDirective",
        "scope": 15048,
        "sourceUnit": 15920,
        "src": "196:59:57",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/math/Math.sol",
        "file": "openzeppelin-solidity/contracts/math/Math.sol",
        "id": 12487,
        "nodeType": "ImportDirective",
        "scope": 15048,
        "sourceUnit": 15792,
        "src": "256:55:57",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol",
        "file": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol",
        "id": 12488,
        "nodeType": "ImportDirective",
        "scope": 15048,
        "sourceUnit": 16749,
        "src": "312:64:57",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/utils/Address.sol",
        "file": "openzeppelin-solidity/contracts/utils/Address.sol",
        "id": 12489,
        "nodeType": "ImportDirective",
        "scope": 15048,
        "sourceUnit": 16768,
        "src": "377:59:57",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 12490,
              "name": "IntVoteInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 15182,
              "src": "564:16:57",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IntVoteInterface_$15182",
                "typeString": "contract IntVoteInterface"
              }
            },
            "id": 12491,
            "nodeType": "InheritanceSpecifier",
            "src": "564:16:57"
          }
        ],
        "contractDependencies": [
          15182
        ],
        "contractKind": "contract",
        "documentation": "@title GenesisProtocol implementation -an organization's voting machine scheme.",
        "fullyImplemented": false,
        "id": 15047,
        "linearizedBaseContracts": [
          15047,
          15182
        ],
        "name": "GenesisProtocolLogic",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 12494,
            "libraryName": {
              "contractScope": null,
              "id": 12492,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 15919,
              "src": "593:8:57",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$15919",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "587:27:57",
            "typeName": {
              "id": 12493,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "606:7:57",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "id": 12497,
            "libraryName": {
              "contractScope": null,
              "id": 12495,
              "name": "Math",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 15791,
              "src": "625:4:57",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Math_$15791",
                "typeString": "library Math"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "619:23:57",
            "typeName": {
              "id": 12496,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "634:7:57",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "id": 12500,
            "libraryName": {
              "contractScope": null,
              "id": 12498,
              "name": "RealMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 11188,
              "src": "653:8:57",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_RealMath_$11188",
                "typeString": "library RealMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "647:27:57",
            "typeName": {
              "id": 12499,
              "name": "uint216",
              "nodeType": "ElementaryTypeName",
              "src": "666:7:57",
              "typeDescriptions": {
                "typeIdentifier": "t_uint216",
                "typeString": "uint216"
              }
            }
          },
          {
            "id": 12503,
            "libraryName": {
              "contractScope": null,
              "id": 12501,
              "name": "RealMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 11188,
              "src": "685:8:57",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_RealMath_$11188",
                "typeString": "library RealMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "679:27:57",
            "typeName": {
              "id": 12502,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "698:7:57",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "id": 12506,
            "libraryName": {
              "contractScope": null,
              "id": 12504,
              "name": "Address",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 16767,
              "src": "717:7:57",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Address_$16767",
                "typeString": "library Address"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "711:26:57",
            "typeName": {
              "id": 12505,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "729:7:57",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            }
          },
          {
            "canonicalName": "GenesisProtocolLogic.ProposalState",
            "id": 12514,
            "members": [
              {
                "id": 12507,
                "name": "None",
                "nodeType": "EnumValue",
                "src": "764:4:57"
              },
              {
                "id": 12508,
                "name": "ExpiredInQueue",
                "nodeType": "EnumValue",
                "src": "770:14:57"
              },
              {
                "id": 12509,
                "name": "Executed",
                "nodeType": "EnumValue",
                "src": "786:8:57"
              },
              {
                "id": 12510,
                "name": "Queued",
                "nodeType": "EnumValue",
                "src": "796:6:57"
              },
              {
                "id": 12511,
                "name": "PreBoosted",
                "nodeType": "EnumValue",
                "src": "804:10:57"
              },
              {
                "id": 12512,
                "name": "Boosted",
                "nodeType": "EnumValue",
                "src": "816:7:57"
              },
              {
                "id": 12513,
                "name": "QuietEndingPeriod",
                "nodeType": "EnumValue",
                "src": "825:17:57"
              }
            ],
            "name": "ProposalState",
            "nodeType": "EnumDefinition",
            "src": "743:100:57"
          },
          {
            "canonicalName": "GenesisProtocolLogic.ExecutionState",
            "id": 12521,
            "members": [
              {
                "id": 12515,
                "name": "None",
                "nodeType": "EnumValue",
                "src": "870:4:57"
              },
              {
                "id": 12516,
                "name": "QueueBarCrossed",
                "nodeType": "EnumValue",
                "src": "876:15:57"
              },
              {
                "id": 12517,
                "name": "QueueTimeOut",
                "nodeType": "EnumValue",
                "src": "893:12:57"
              },
              {
                "id": 12518,
                "name": "PreBoostedBarCrossed",
                "nodeType": "EnumValue",
                "src": "907:20:57"
              },
              {
                "id": 12519,
                "name": "BoostedTimeOut",
                "nodeType": "EnumValue",
                "src": "929:14:57"
              },
              {
                "id": 12520,
                "name": "BoostedBarCrossed",
                "nodeType": "EnumValue",
                "src": "945:17:57"
              }
            ],
            "name": "ExecutionState",
            "nodeType": "EnumDefinition",
            "src": "848:115:57"
          },
          {
            "canonicalName": "GenesisProtocolLogic.Parameters",
            "id": 12548,
            "members": [
              {
                "constant": false,
                "id": 12523,
                "name": "queuedVoteRequiredPercentage",
                "nodeType": "VariableDeclaration",
                "scope": 12548,
                "src": "1029:36:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12522,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1029:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12525,
                "name": "queuedVotePeriodLimit",
                "nodeType": "VariableDeclaration",
                "scope": 12548,
                "src": "1113:29:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12524,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1113:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12527,
                "name": "boostedVotePeriodLimit",
                "nodeType": "VariableDeclaration",
                "scope": 12548,
                "src": "1218:30:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12526,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1218:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12529,
                "name": "preBoostedVotePeriodLimit",
                "nodeType": "VariableDeclaration",
                "scope": 12548,
                "src": "1311:33:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12528,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1311:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12531,
                "name": "thresholdConst",
                "nodeType": "VariableDeclaration",
                "scope": 12548,
                "src": "1485:22:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12530,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1485:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12533,
                "name": "limitExponentValue",
                "nodeType": "VariableDeclaration",
                "scope": 12548,
                "src": "1647:26:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12532,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1647:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12535,
                "name": "quietEndingPeriod",
                "nodeType": "VariableDeclaration",
                "scope": 12548,
                "src": "1815:25:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12534,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1815:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12537,
                "name": "proposingRepReward",
                "nodeType": "VariableDeclaration",
                "scope": 12548,
                "src": "1872:26:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12536,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1872:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12539,
                "name": "votersReputationLossRatio",
                "nodeType": "VariableDeclaration",
                "scope": 12548,
                "src": "1937:33:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12538,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1937:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12541,
                "name": "minimumDaoBounty",
                "nodeType": "VariableDeclaration",
                "scope": 12548,
                "src": "2110:24:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12540,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2110:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12543,
                "name": "daoBountyConst",
                "nodeType": "VariableDeclaration",
                "scope": 12548,
                "src": "2144:22:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12542,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2144:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12545,
                "name": "activationTime",
                "nodeType": "VariableDeclaration",
                "scope": 12548,
                "src": "2332:22:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12544,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2332:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12547,
                "name": "voteOnBehalf",
                "nodeType": "VariableDeclaration",
                "scope": 12548,
                "src": "2521:20:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 12546,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "2521:7:57",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Parameters",
            "nodeType": "StructDefinition",
            "scope": 15047,
            "src": "1001:1547:57",
            "visibility": "public"
          },
          {
            "canonicalName": "GenesisProtocolLogic.Voter",
            "id": 12555,
            "members": [
              {
                "constant": false,
                "id": 12550,
                "name": "vote",
                "nodeType": "VariableDeclaration",
                "scope": 12555,
                "src": "2577:12:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12549,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2577:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12552,
                "name": "reputation",
                "nodeType": "VariableDeclaration",
                "scope": 12555,
                "src": "2616:18:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12551,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2616:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12554,
                "name": "preBoosted",
                "nodeType": "VariableDeclaration",
                "scope": 12555,
                "src": "2676:15:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 12553,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "2676:4:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Voter",
            "nodeType": "StructDefinition",
            "scope": 15047,
            "src": "2554:144:57",
            "visibility": "public"
          },
          {
            "canonicalName": "GenesisProtocolLogic.Staker",
            "id": 12562,
            "members": [
              {
                "constant": false,
                "id": 12557,
                "name": "vote",
                "nodeType": "VariableDeclaration",
                "scope": 12562,
                "src": "2728:12:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12556,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2728:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12559,
                "name": "amount",
                "nodeType": "VariableDeclaration",
                "scope": 12562,
                "src": "2767:14:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12558,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2767:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12561,
                "name": "amount4Bounty",
                "nodeType": "VariableDeclaration",
                "scope": 12562,
                "src": "2819:21:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12560,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2819:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Staker",
            "nodeType": "StructDefinition",
            "scope": 15047,
            "src": "2704:206:57",
            "visibility": "public"
          },
          {
            "canonicalName": "GenesisProtocolLogic.Proposal",
            "id": 12613,
            "members": [
              {
                "constant": false,
                "id": 12564,
                "name": "organizationId",
                "nodeType": "VariableDeclaration",
                "scope": 12613,
                "src": "2942:22:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 12563,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "2942:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12566,
                "name": "callbacks",
                "nodeType": "VariableDeclaration",
                "scope": 12613,
                "src": "3039:17:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 12565,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "3039:7:57",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12568,
                "name": "state",
                "nodeType": "VariableDeclaration",
                "scope": 12613,
                "src": "3115:19:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_enum$_ProposalState_$12514",
                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 12567,
                  "name": "ProposalState",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 12514,
                  "src": "3115:13:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_ProposalState_$12514",
                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12570,
                "name": "winningVote",
                "nodeType": "VariableDeclaration",
                "scope": 12613,
                "src": "3144:19:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12569,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3144:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12572,
                "name": "proposer",
                "nodeType": "VariableDeclaration",
                "scope": 12613,
                "src": "3193:16:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 12571,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "3193:7:57",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12574,
                "name": "currentBoostedVotePeriodLimit",
                "nodeType": "VariableDeclaration",
                "scope": 12613,
                "src": "3313:37:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12573,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3313:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12576,
                "name": "paramsHash",
                "nodeType": "VariableDeclaration",
                "scope": 12613,
                "src": "3360:18:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 12575,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "3360:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12578,
                "name": "daoBountyRemain",
                "nodeType": "VariableDeclaration",
                "scope": 12613,
                "src": "3388:23:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12577,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3388:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12580,
                "name": "daoBounty",
                "nodeType": "VariableDeclaration",
                "scope": 12613,
                "src": "3496:17:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12579,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3496:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12582,
                "name": "totalStakes",
                "nodeType": "VariableDeclaration",
                "scope": 12613,
                "src": "3523:19:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12581,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3523:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12584,
                "name": "confidenceThreshold",
                "nodeType": "VariableDeclaration",
                "scope": 12613,
                "src": "3620:27:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12583,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3620:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12586,
                "name": "expirationCallBountyPercentage",
                "nodeType": "VariableDeclaration",
                "scope": 12613,
                "src": "3747:38:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12585,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3747:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12590,
                "name": "times",
                "nodeType": "VariableDeclaration",
                "scope": 12613,
                "src": "3795:13:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr",
                  "typeString": "uint256[3]"
                },
                "typeName": {
                  "baseType": {
                    "id": 12587,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3795:4:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 12589,
                  "length": {
                    "argumentTypes": null,
                    "hexValue": "33",
                    "id": 12588,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3800:1:57",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    },
                    "value": "3"
                  },
                  "nodeType": "ArrayTypeName",
                  "src": "3795:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr",
                    "typeString": "uint256[3]"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12592,
                "name": "daoRedeemItsWinnings",
                "nodeType": "VariableDeclaration",
                "scope": 12613,
                "src": "3954:25:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 12591,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "3954:4:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12596,
                "name": "votes",
                "nodeType": "VariableDeclaration",
                "scope": 12613,
                "src": "4026:40:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                  "typeString": "mapping(uint256 => uint256)"
                },
                "typeName": {
                  "id": 12595,
                  "keyType": {
                    "id": 12593,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4034:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "4026:34:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "valueType": {
                    "id": 12594,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4048:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12600,
                "name": "preBoostedVotes",
                "nodeType": "VariableDeclaration",
                "scope": 12613,
                "src": "4113:50:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                  "typeString": "mapping(uint256 => uint256)"
                },
                "typeName": {
                  "id": 12599,
                  "keyType": {
                    "id": 12597,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4121:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "4113:34:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "valueType": {
                    "id": 12598,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4135:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12604,
                "name": "voters",
                "nodeType": "VariableDeclaration",
                "scope": 12613,
                "src": "4207:37:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$12555_storage_$",
                  "typeString": "mapping(address => struct GenesisProtocolLogic.Voter)"
                },
                "typeName": {
                  "id": 12603,
                  "keyType": {
                    "id": 12601,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4215:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "4207:30:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$12555_storage_$",
                    "typeString": "mapping(address => struct GenesisProtocolLogic.Voter)"
                  },
                  "valueType": {
                    "contractScope": null,
                    "id": 12602,
                    "name": "Voter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12555,
                    "src": "4227:5:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Voter_$12555_storage_ptr",
                      "typeString": "struct GenesisProtocolLogic.Voter"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12608,
                "name": "stakes",
                "nodeType": "VariableDeclaration",
                "scope": 12613,
                "src": "4289:41:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                  "typeString": "mapping(uint256 => uint256)"
                },
                "typeName": {
                  "id": 12607,
                  "keyType": {
                    "id": 12605,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4297:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "4289:34:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "valueType": {
                    "id": 12606,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4311:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12612,
                "name": "stakers",
                "nodeType": "VariableDeclaration",
                "scope": 12613,
                "src": "4372:38:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$12562_storage_$",
                  "typeString": "mapping(address => struct GenesisProtocolLogic.Staker)"
                },
                "typeName": {
                  "id": 12611,
                  "keyType": {
                    "id": 12609,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4380:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "4372:30:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$12562_storage_$",
                    "typeString": "mapping(address => struct GenesisProtocolLogic.Staker)"
                  },
                  "valueType": {
                    "contractScope": null,
                    "id": 12610,
                    "name": "Staker",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12562,
                    "src": "4392:6:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                      "typeString": "struct GenesisProtocolLogic.Staker"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Proposal",
            "nodeType": "StructDefinition",
            "scope": 15047,
            "src": "2916:1501:57",
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 12625,
            "name": "Stake",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 12624,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12615,
                  "indexed": true,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 12625,
                  "src": "4435:27:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12614,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4435:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12617,
                  "indexed": true,
                  "name": "_organization",
                  "nodeType": "VariableDeclaration",
                  "scope": 12625,
                  "src": "4472:29:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12616,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4472:7:57",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12619,
                  "indexed": true,
                  "name": "_staker",
                  "nodeType": "VariableDeclaration",
                  "scope": 12625,
                  "src": "4511:23:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12618,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4511:7:57",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12621,
                  "indexed": false,
                  "name": "_vote",
                  "nodeType": "VariableDeclaration",
                  "scope": 12625,
                  "src": "4544:13:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12620,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4544:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12623,
                  "indexed": false,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 12625,
                  "src": "4567:15:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12622,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4567:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4434:154:57"
            },
            "src": "4423:166:57"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 12635,
            "name": "Redeem",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 12634,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12627,
                  "indexed": true,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 12635,
                  "src": "4608:27:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12626,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4608:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12629,
                  "indexed": true,
                  "name": "_organization",
                  "nodeType": "VariableDeclaration",
                  "scope": 12635,
                  "src": "4645:29:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12628,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4645:7:57",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12631,
                  "indexed": true,
                  "name": "_beneficiary",
                  "nodeType": "VariableDeclaration",
                  "scope": 12635,
                  "src": "4684:28:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12630,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4684:7:57",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12633,
                  "indexed": false,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 12635,
                  "src": "4722:15:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12632,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4722:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4607:136:57"
            },
            "src": "4595:149:57"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 12645,
            "name": "RedeemDaoBounty",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 12644,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12637,
                  "indexed": true,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 12645,
                  "src": "4772:27:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12636,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4772:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12639,
                  "indexed": true,
                  "name": "_organization",
                  "nodeType": "VariableDeclaration",
                  "scope": 12645,
                  "src": "4809:29:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12638,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4809:7:57",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12641,
                  "indexed": true,
                  "name": "_beneficiary",
                  "nodeType": "VariableDeclaration",
                  "scope": 12645,
                  "src": "4848:28:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12640,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4848:7:57",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12643,
                  "indexed": false,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 12645,
                  "src": "4886:15:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12642,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4886:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4771:136:57"
            },
            "src": "4750:158:57"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 12655,
            "name": "RedeemReputation",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 12654,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12647,
                  "indexed": true,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 12655,
                  "src": "4937:27:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12646,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4937:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12649,
                  "indexed": true,
                  "name": "_organization",
                  "nodeType": "VariableDeclaration",
                  "scope": 12655,
                  "src": "4974:29:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12648,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4974:7:57",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12651,
                  "indexed": true,
                  "name": "_beneficiary",
                  "nodeType": "VariableDeclaration",
                  "scope": 12655,
                  "src": "5013:28:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12650,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5013:7:57",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12653,
                  "indexed": false,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 12655,
                  "src": "5051:15:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12652,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5051:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4936:136:57"
            },
            "src": "4914:159:57"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 12661,
            "name": "StateChange",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 12660,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12657,
                  "indexed": true,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 12661,
                  "src": "5097:27:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12656,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5097:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12659,
                  "indexed": false,
                  "name": "_proposalState",
                  "nodeType": "VariableDeclaration",
                  "scope": 12661,
                  "src": "5126:28:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_ProposalState_$12514",
                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12658,
                    "name": "ProposalState",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12514,
                    "src": "5126:13:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ProposalState_$12514",
                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5096:59:57"
            },
            "src": "5079:77:57"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 12667,
            "name": "GPExecuteProposal",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 12666,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12663,
                  "indexed": true,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 12667,
                  "src": "5185:27:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12662,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5185:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12665,
                  "indexed": false,
                  "name": "_executionState",
                  "nodeType": "VariableDeclaration",
                  "scope": 12667,
                  "src": "5214:30:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_ExecutionState_$12521",
                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12664,
                    "name": "ExecutionState",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12521,
                    "src": "5214:14:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ExecutionState_$12521",
                      "typeString": "enum GenesisProtocolLogic.ExecutionState"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5184:61:57"
            },
            "src": "5161:85:57"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 12675,
            "name": "ExpirationCallBounty",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 12674,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12669,
                  "indexed": true,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 12675,
                  "src": "5278:27:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12668,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5278:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12671,
                  "indexed": true,
                  "name": "_beneficiary",
                  "nodeType": "VariableDeclaration",
                  "scope": 12675,
                  "src": "5307:28:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12670,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5307:7:57",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12673,
                  "indexed": false,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 12675,
                  "src": "5337:15:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12672,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5337:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5277:76:57"
            },
            "src": "5251:103:57"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 12681,
            "name": "ConfidenceLevelChange",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 12680,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12677,
                  "indexed": true,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 12681,
                  "src": "5387:27:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12676,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5387:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12679,
                  "indexed": false,
                  "name": "_confidenceThreshold",
                  "nodeType": "VariableDeclaration",
                  "scope": 12681,
                  "src": "5416:28:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12678,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5416:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5386:59:57"
            },
            "src": "5359:87:57"
          },
          {
            "constant": false,
            "id": 12685,
            "name": "parameters",
            "nodeType": "VariableDeclaration",
            "scope": 15047,
            "src": "5452:46:57",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$12548_storage_$",
              "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters)"
            },
            "typeName": {
              "id": 12684,
              "keyType": {
                "id": 12682,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "5460:7:57",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "5452:28:57",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$12548_storage_$",
                "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters)"
              },
              "valueType": {
                "contractScope": null,
                "id": 12683,
                "name": "Parameters",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 12548,
                "src": "5469:10:57",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Parameters_$12548_storage_ptr",
                  "typeString": "struct GenesisProtocolLogic.Parameters"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 12689,
            "name": "proposals",
            "nodeType": "VariableDeclaration",
            "scope": 15047,
            "src": "5544:43:57",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$12613_storage_$",
              "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal)"
            },
            "typeName": {
              "id": 12688,
              "keyType": {
                "id": 12686,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "5552:7:57",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "5544:26:57",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$12613_storage_$",
                "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal)"
              },
              "valueType": {
                "contractScope": null,
                "id": 12687,
                "name": "Proposal",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 12613,
                "src": "5561:8:57",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                  "typeString": "struct GenesisProtocolLogic.Proposal"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 12693,
            "name": "orgBoostedProposalsCnt",
            "nodeType": "VariableDeclaration",
            "scope": 15047,
            "src": "5656:52:57",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
              "typeString": "mapping(bytes32 => uint256)"
            },
            "typeName": {
              "id": 12692,
              "keyType": {
                "id": 12690,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "5664:7:57",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "5656:22:57",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                "typeString": "mapping(bytes32 => uint256)"
              },
              "valueType": {
                "id": 12691,
                "name": "uint",
                "nodeType": "ElementaryTypeName",
                "src": "5673:4:57",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 12697,
            "name": "organizations",
            "nodeType": "VariableDeclaration",
            "scope": 15047,
            "src": "5758:60:57",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
              "typeString": "mapping(bytes32 => address)"
            },
            "typeName": {
              "id": 12696,
              "keyType": {
                "id": 12694,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "5766:7:57",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "5758:39:57",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                "typeString": "mapping(bytes32 => address)"
              },
              "valueType": {
                "id": 12695,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "5784:7:57",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 12701,
            "name": "averagesDownstakesOfBoosted",
            "nodeType": "VariableDeclaration",
            "scope": 15047,
            "src": "5877:86:57",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
              "typeString": "mapping(bytes32 => uint256)"
            },
            "typeName": {
              "id": 12700,
              "keyType": {
                "id": 12698,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "5885:7:57",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "5877:51:57",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                "typeString": "mapping(bytes32 => uint256)"
              },
              "valueType": {
                "id": 12699,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "5906:7:57",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 12704,
            "name": "NUM_OF_CHOICES",
            "nodeType": "VariableDeclaration",
            "scope": 15047,
            "src": "5969:42:57",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 12702,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "5969:7:57",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "32",
              "id": 12703,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "6010:1:57",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_2_by_1",
                "typeString": "int_const 2"
              },
              "value": "2"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 12707,
            "name": "NO",
            "nodeType": "VariableDeclaration",
            "scope": 15047,
            "src": "6017:30:57",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 12705,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "6017:7:57",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "32",
              "id": 12706,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "6046:1:57",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_2_by_1",
                "typeString": "int_const 2"
              },
              "value": "2"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 12710,
            "name": "YES",
            "nodeType": "VariableDeclaration",
            "scope": 15047,
            "src": "6053:31:57",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 12708,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "6053:7:57",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "31",
              "id": 12709,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "6083:1:57",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1_by_1",
                "typeString": "int_const 1"
              },
              "value": "1"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 12712,
            "name": "proposalsCnt",
            "nodeType": "VariableDeclaration",
            "scope": 15047,
            "src": "6090:27:57",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 12711,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "6090:7:57",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 12714,
            "name": "stakingToken",
            "nodeType": "VariableDeclaration",
            "scope": 15047,
            "src": "6152:26:57",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IERC20_$16748",
              "typeString": "contract IERC20"
            },
            "typeName": {
              "contractScope": null,
              "id": 12713,
              "name": "IERC20",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 16748,
              "src": "6152:6:57",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IERC20_$16748",
                "typeString": "contract IERC20"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 12717,
            "name": "GEN_TOKEN_ADDRESS",
            "nodeType": "VariableDeclaration",
            "scope": 15047,
            "src": "6184:87:57",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 12715,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "6184:7:57",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307835343346663232374636344161313765413133324266393838366341623544423535444341646466",
              "id": 12716,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "6229:42:57",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_address_payable",
                "typeString": "address payable"
              },
              "value": "0x543Ff227F64Aa17eA132Bf9886cAb5DB55DCAddf"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 12720,
            "name": "MAX_BOOSTED_PROPOSALS",
            "nodeType": "VariableDeclaration",
            "scope": 15047,
            "src": "6277:53:57",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 12718,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "6277:7:57",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "34303936",
              "id": 12719,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "6326:4:57",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_4096_by_1",
                "typeString": "int_const 4096"
              },
              "value": "4096"
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 12743,
              "nodeType": "Block",
              "src": "6418:556:57",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12726,
                            "name": "GEN_TOKEN_ADDRESS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12717,
                            "src": "6811:17:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 12725,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6803:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 12727,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6803:26:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 12728,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isContract",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16766,
                      "src": "6803:37:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                        "typeString": "function (address) view returns (bool)"
                      }
                    },
                    "id": 12729,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6803:39:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 12741,
                    "nodeType": "Block",
                    "src": "6915:53:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12739,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 12737,
                            "name": "stakingToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12714,
                            "src": "6929:12:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$16748",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 12738,
                            "name": "_stakingToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12722,
                            "src": "6944:13:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$16748",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "6929:28:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$16748",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 12740,
                        "nodeType": "ExpressionStatement",
                        "src": "6929:28:57"
                      }
                    ]
                  },
                  "id": 12742,
                  "nodeType": "IfStatement",
                  "src": "6799:169:57",
                  "trueBody": {
                    "id": 12736,
                    "nodeType": "Block",
                    "src": "6844:65:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12734,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 12730,
                            "name": "stakingToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12714,
                            "src": "6858:12:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$16748",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 12732,
                                "name": "GEN_TOKEN_ADDRESS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12717,
                                "src": "6880:17:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 12731,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16748,
                              "src": "6873:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$16748_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 12733,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6873:25:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$16748",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "6858:40:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$16748",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 12735,
                        "nodeType": "ExpressionStatement",
                        "src": "6858:40:57"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev Constructor",
            "id": 12744,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12723,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12722,
                  "name": "_stakingToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 12744,
                  "src": "6389:20:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$16748",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12721,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 16748,
                    "src": "6389:6:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$16748",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6388:22:57"
            },
            "returnParameters": {
              "id": 12724,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6418:0:57"
            },
            "scope": 15047,
            "src": "6377:597:57",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12755,
              "nodeType": "Block",
              "src": "7196:60:57",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12750,
                            "name": "_proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12746,
                            "src": "7225:11:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 12749,
                          "name": "_isVotable",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15046,
                          "src": "7214:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 12751,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7214:23:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 12748,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16785,
                      "src": "7206:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 12752,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7206:32:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12753,
                  "nodeType": "ExpressionStatement",
                  "src": "7206:32:57"
                },
                {
                  "id": 12754,
                  "nodeType": "PlaceholderStatement",
                  "src": "7248:1:57"
                }
              ]
            },
            "documentation": "@dev Check that the proposal is votable\na proposal is votable if it is in one of the following states:\n PreBoosted,Boosted,QuietEndingPeriod or Queued",
            "id": 12756,
            "name": "votable",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 12747,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12746,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 12756,
                  "src": "7175:19:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12745,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7175:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7174:21:57"
            },
            "src": "7158:98:57",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12979,
              "nodeType": "Block",
              "src": "7700:2008:57",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12775,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 12770,
                          "name": "now",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16784,
                          "src": "7770:3:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 12771,
                              "name": "parameters",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12685,
                              "src": "7776:10:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$12548_storage_$",
                                "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                              }
                            },
                            "id": 12773,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 12772,
                              "name": "_paramsHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12760,
                              "src": "7787:11:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7776:23:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Parameters_$12548_storage",
                              "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                            }
                          },
                          "id": 12774,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "activationTime",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12545,
                          "src": "7776:38:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7770:44:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6e6f742061637469766520796574",
                        "id": 12776,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7816:16:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_f30c2c4eef761b63d78da11427f8e9c88d014c48e08e70db1400926a3cd70480",
                          "typeString": "literal_string \"not active yet\""
                        },
                        "value": "not active yet"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_f30c2c4eef761b63d78da11427f8e9c88d014c48e08e70db1400926a3cd70480",
                          "typeString": "literal_string \"not active yet\""
                        }
                      ],
                      "id": 12769,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "7762:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 12777,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7762:71:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12778,
                  "nodeType": "ExpressionStatement",
                  "src": "7762:71:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12785,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 12780,
                              "name": "parameters",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12685,
                              "src": "7889:10:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$12548_storage_$",
                                "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                              }
                            },
                            "id": 12782,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 12781,
                              "name": "_paramsHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12760,
                              "src": "7900:11:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7889:23:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Parameters_$12548_storage",
                              "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                            }
                          },
                          "id": 12783,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "queuedVoteRequiredPercentage",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12523,
                          "src": "7889:52:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3530",
                          "id": 12784,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7945:2:57",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_50_by_1",
                            "typeString": "int_const 50"
                          },
                          "value": "50"
                        },
                        "src": "7889:58:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 12779,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16785,
                      "src": "7881:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 12786,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7881:67:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12787,
                  "nodeType": "ExpressionStatement",
                  "src": "7881:67:57"
                },
                {
                  "assignments": [
                    12789
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12789,
                      "name": "proposalId",
                      "nodeType": "VariableDeclaration",
                      "scope": 12979,
                      "src": "7991:18:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 12788,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7991:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12797,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12793,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16842,
                            "src": "8039:4:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_GenesisProtocolLogic_$15047",
                              "typeString": "contract GenesisProtocolLogic"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 12794,
                            "name": "proposalsCnt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12712,
                            "src": "8045:12:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_GenesisProtocolLogic_$15047",
                              "typeString": "contract GenesisProtocolLogic"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 12791,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16769,
                            "src": "8022:3:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 12792,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "8022:16:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 12795,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8022:36:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 12790,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16776,
                      "src": "8012:9:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 12796,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8012:47:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7991:68:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12803,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 12798,
                      "name": "proposalsCnt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12712,
                      "src": "8069:12:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 12801,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8101:1:57",
                          "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": 12799,
                          "name": "proposalsCnt",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12712,
                          "src": "8084:12:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12800,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 15898,
                        "src": "8084:16:57",
                        "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": 12802,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8084:19:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8069:34:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 12804,
                  "nodeType": "ExpressionStatement",
                  "src": "8069:34:57"
                },
                {
                  "assignments": [
                    12806
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12806,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 12979,
                      "src": "8140:24:57",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 12805,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12613,
                        "src": "8140:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12807,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8140:24:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12813,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12808,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12806,
                        "src": "8174:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 12810,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "callbacks",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12566,
                      "src": "8174:18:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12811,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16782,
                        "src": "8195:3:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 12812,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "8195:10:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "8174:31:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 12814,
                  "nodeType": "ExpressionStatement",
                  "src": "8174:31:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12826,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12815,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12806,
                        "src": "8215:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 12817,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "organizationId",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12564,
                      "src": "8215:23:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12821,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16782,
                                "src": "8268:3:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 12822,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "8268:10:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12823,
                              "name": "_organization",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12764,
                              "src": "8280:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12819,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16769,
                              "src": "8251:3:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 12820,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodePacked",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8251:16:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 12824,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8251:43:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 12818,
                        "name": "keccak256",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16776,
                        "src": "8241:9:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (bytes memory) pure returns (bytes32)"
                        }
                      },
                      "id": 12825,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8241:54:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "8215:80:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 12827,
                  "nodeType": "ExpressionStatement",
                  "src": "8215:80:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12833,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12828,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12806,
                        "src": "8306:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 12830,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "state",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12568,
                      "src": "8306:14:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ProposalState_$12514",
                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12831,
                        "name": "ProposalState",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12514,
                        "src": "8323:13:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                          "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                        }
                      },
                      "id": 12832,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "Queued",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "8323:20:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ProposalState_$12514",
                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                      }
                    },
                    "src": "8306:37:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ProposalState_$12514",
                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                    }
                  },
                  "id": 12834,
                  "nodeType": "ExpressionStatement",
                  "src": "8306:37:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12841,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12835,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12806,
                          "src": "8407:8:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                            "typeString": "struct GenesisProtocolLogic.Proposal memory"
                          }
                        },
                        "id": 12838,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "times",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12590,
                        "src": "8407:14:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$3_memory",
                          "typeString": "uint256[3] memory"
                        }
                      },
                      "id": 12839,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 12837,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8422:1:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8407:17:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 12840,
                      "name": "now",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16784,
                      "src": "8427:3:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8407:23:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 12842,
                  "nodeType": "ExpressionStatement",
                  "src": "8407:23:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12850,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12843,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12806,
                        "src": "8456:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 12845,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "currentBoostedVotePeriodLimit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12574,
                      "src": "8456:38:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 12846,
                          "name": "parameters",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12685,
                          "src": "8497:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$12548_storage_$",
                            "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                          }
                        },
                        "id": 12848,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 12847,
                          "name": "_paramsHash",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12760,
                          "src": "8508:11:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "8497:23:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$12548_storage",
                          "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                        }
                      },
                      "id": 12849,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "boostedVotePeriodLimit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12527,
                      "src": "8497:46:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8456:87:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 12851,
                  "nodeType": "ExpressionStatement",
                  "src": "8456:87:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12856,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12852,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12806,
                        "src": "8553:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 12854,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "proposer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12572,
                      "src": "8553:17:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 12855,
                      "name": "_proposer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12762,
                      "src": "8573:9:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "8553:29:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 12857,
                  "nodeType": "ExpressionStatement",
                  "src": "8553:29:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12862,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12858,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12806,
                        "src": "8592:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 12860,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "winningVote",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12570,
                      "src": "8592:20:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 12861,
                      "name": "NO",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12707,
                      "src": "8615:2:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8592:25:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 12863,
                  "nodeType": "ExpressionStatement",
                  "src": "8592:25:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12868,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12864,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12806,
                        "src": "8627:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 12866,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "paramsHash",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12576,
                      "src": "8627:19:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 12867,
                      "name": "_paramsHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12760,
                      "src": "8649:11:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "8627:33:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 12869,
                  "nodeType": "ExpressionStatement",
                  "src": "8627:33:57"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 12877,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 12870,
                        "name": "organizations",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12697,
                        "src": "8674:13:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 12873,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12871,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12806,
                          "src": "8688:8:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                            "typeString": "struct GenesisProtocolLogic.Proposal memory"
                          }
                        },
                        "id": 12872,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "organizationId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12564,
                        "src": "8688:23:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "8674:38:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 12875,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8724:1:57",
                          "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": 12874,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "8716:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 12876,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8716:10:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "8674:52:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 12902,
                  "nodeType": "IfStatement",
                  "src": "8670:292:57",
                  "trueBody": {
                    "id": 12901,
                    "nodeType": "Block",
                    "src": "8728:234:57",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 12882,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 12878,
                            "name": "_organization",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12764,
                            "src": "8746:13:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 12880,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8771:1:57",
                                "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": 12879,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8763:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 12881,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8763:10:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "8746:27:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 12899,
                          "nodeType": "Block",
                          "src": "8865:87:57",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 12897,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 12892,
                                    "name": "organizations",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12697,
                                    "src": "8883:13:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                      "typeString": "mapping(bytes32 => address)"
                                    }
                                  },
                                  "id": 12895,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 12893,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12806,
                                      "src": "8897:8:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal memory"
                                      }
                                    },
                                    "id": 12894,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "organizationId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12564,
                                    "src": "8897:23:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "8883:38:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 12896,
                                  "name": "_organization",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12764,
                                  "src": "8924:13:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "8883:54:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 12898,
                              "nodeType": "ExpressionStatement",
                              "src": "8883:54:57"
                            }
                          ]
                        },
                        "id": 12900,
                        "nodeType": "IfStatement",
                        "src": "8742:210:57",
                        "trueBody": {
                          "id": 12891,
                          "nodeType": "Block",
                          "src": "8775:84:57",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 12889,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 12883,
                                    "name": "organizations",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12697,
                                    "src": "8793:13:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                      "typeString": "mapping(bytes32 => address)"
                                    }
                                  },
                                  "id": 12886,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 12884,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12806,
                                      "src": "8807:8:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal memory"
                                      }
                                    },
                                    "id": 12885,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "organizationId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12564,
                                    "src": "8807:23:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "8793:38:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 12887,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16782,
                                    "src": "8834:3:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 12888,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "8834:10:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "8793:51:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 12890,
                              "nodeType": "ExpressionStatement",
                              "src": "8793:51:57"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    12904
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12904,
                      "name": "daoBounty",
                      "nodeType": "VariableDeclaration",
                      "scope": 12979,
                      "src": "8997:17:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12903,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8997:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12918,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "313030",
                        "id": 12916,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9126:3:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_100_by_1",
                          "typeString": "int_const 100"
                        },
                        "value": "100"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_100_by_1",
                          "typeString": "int_const 100"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 12910,
                              "name": "averagesDownstakesOfBoosted",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12701,
                              "src": "9068:27:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 12913,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12911,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12806,
                                "src": "9096:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal memory"
                                }
                              },
                              "id": 12912,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "organizationId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12564,
                              "src": "9096:23:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9068:52:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 12905,
                                "name": "parameters",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12685,
                                "src": "9025:10:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$12548_storage_$",
                                  "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                                }
                              },
                              "id": 12907,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 12906,
                                "name": "_paramsHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12760,
                                "src": "9036:11:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "9025:23:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Parameters_$12548_storage",
                                "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                              }
                            },
                            "id": 12908,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "daoBountyConst",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12543,
                            "src": "9025:38:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 12909,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 15826,
                          "src": "9025:42:57",
                          "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": 12914,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9025:96:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 12915,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "div",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15850,
                      "src": "9025:100:57",
                      "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": 12917,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9025:105:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8997:133:57"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12924,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 12919,
                      "name": "daoBounty",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12904,
                      "src": "9144:9:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 12920,
                          "name": "parameters",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12685,
                          "src": "9156:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$12548_storage_$",
                            "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                          }
                        },
                        "id": 12922,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 12921,
                          "name": "_paramsHash",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12760,
                          "src": "9167:11:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "9156:23:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$12548_storage",
                          "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                        }
                      },
                      "id": 12923,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "minimumDaoBounty",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12541,
                      "src": "9156:40:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9144:52:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 12941,
                    "nodeType": "Block",
                    "src": "9296:61:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12939,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12935,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12806,
                              "src": "9310:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal memory"
                              }
                            },
                            "id": 12937,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "daoBountyRemain",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12578,
                            "src": "9310:24:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 12938,
                            "name": "daoBounty",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12904,
                            "src": "9337:9:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9310:36:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12940,
                        "nodeType": "ExpressionStatement",
                        "src": "9310:36:57"
                      }
                    ]
                  },
                  "id": 12942,
                  "nodeType": "IfStatement",
                  "src": "9140:217:57",
                  "trueBody": {
                    "id": 12934,
                    "nodeType": "Block",
                    "src": "9198:92:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12932,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12925,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12806,
                              "src": "9212:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal memory"
                              }
                            },
                            "id": 12927,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "daoBountyRemain",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12578,
                            "src": "9212:24:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 12928,
                                "name": "parameters",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12685,
                                "src": "9239:10:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$12548_storage_$",
                                  "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                                }
                              },
                              "id": 12930,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 12929,
                                "name": "_paramsHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12760,
                                "src": "9250:11:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "9239:23:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Parameters_$12548_storage",
                                "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                              }
                            },
                            "id": 12931,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "minimumDaoBounty",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12541,
                            "src": "9239:40:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9212:67:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12933,
                        "nodeType": "ExpressionStatement",
                        "src": "9212:67:57"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12948,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12943,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12806,
                        "src": "9366:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 12945,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalStakes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12582,
                      "src": "9366:20:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12946,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12806,
                        "src": "9389:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 12947,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "daoBountyRemain",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12578,
                      "src": "9389:24:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9366:47:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 12949,
                  "nodeType": "ExpressionStatement",
                  "src": "9366:47:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12954,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 12950,
                        "name": "proposals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12689,
                        "src": "9423:9:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$12613_storage_$",
                          "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                        }
                      },
                      "id": 12952,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 12951,
                        "name": "proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12789,
                        "src": "9433:10:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "9423:21:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$12613_storage",
                        "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 12953,
                      "name": "proposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12806,
                      "src": "9447:8:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal memory"
                      }
                    },
                    "src": "9423:32:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$12613_storage",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                    }
                  },
                  "id": 12955,
                  "nodeType": "ExpressionStatement",
                  "src": "9423:32:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12964,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 12956,
                            "name": "proposals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12689,
                            "src": "9465:9:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$12613_storage_$",
                              "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                            }
                          },
                          "id": 12958,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 12957,
                            "name": "proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12789,
                            "src": "9475:10:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9465:21:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$12613_storage",
                            "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                          }
                        },
                        "id": 12959,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "stakes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12608,
                        "src": "9465:28:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 12961,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 12960,
                        "name": "NO",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12707,
                        "src": "9494:2:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "9465:32:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12962,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12806,
                        "src": "9500:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 12963,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "daoBountyRemain",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12578,
                      "src": "9500:24:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9465:59:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 12965,
                  "nodeType": "ExpressionStatement",
                  "src": "9465:59:57"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12967,
                        "name": "proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12789,
                        "src": "9583:10:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 12968,
                          "name": "organizations",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12697,
                          "src": "9595:13:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                            "typeString": "mapping(bytes32 => address)"
                          }
                        },
                        "id": 12971,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 12969,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12806,
                            "src": "9609:8:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal memory"
                            }
                          },
                          "id": 12970,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "organizationId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12564,
                          "src": "9609:23:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "9595:38:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12972,
                        "name": "NUM_OF_CHOICES",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12704,
                        "src": "9635:14:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12973,
                        "name": "_proposer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12762,
                        "src": "9651:9:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12974,
                        "name": "_paramsHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12760,
                        "src": "9662:11:57",
                        "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",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 12966,
                      "name": "NewProposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15079,
                      "src": "9571:11:57",
                      "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": 12975,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9571:103:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12976,
                  "nodeType": "EmitStatement",
                  "src": "9566:108:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12977,
                    "name": "proposalId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12789,
                    "src": "9691:10:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 12768,
                  "id": 12978,
                  "nodeType": "Return",
                  "src": "9684:17:57"
                }
              ]
            },
            "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 _paramsHash parameters hash\n@param _proposer address\n@param _organization address",
            "id": 12980,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "propose",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12765,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12758,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12980,
                  "src": "7582:7:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12757,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7582:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12760,
                  "name": "_paramsHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 12980,
                  "src": "7591:19:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12759,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7591:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12762,
                  "name": "_proposer",
                  "nodeType": "VariableDeclaration",
                  "scope": 12980,
                  "src": "7612:17:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12761,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7612:7:57",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12764,
                  "name": "_organization",
                  "nodeType": "VariableDeclaration",
                  "scope": 12980,
                  "src": "7631:21:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12763,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7631:7:57",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7581:72:57"
            },
            "returnParameters": {
              "id": 12768,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12767,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12980,
                  "src": "7687:7:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12766,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7687:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7686:9:57"
            },
            "scope": 15047,
            "src": "7565:2143:57",
            "stateMutability": "nonpayable",
            "superFunction": 15128,
            "visibility": "external"
          },
          {
            "body": {
              "id": 13083,
              "nodeType": "Block",
              "src": "10059:995:57",
              "statements": [
                {
                  "assignments": [
                    12988
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12988,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 13083,
                      "src": "10069:25:57",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 12987,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12613,
                        "src": "10069:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12992,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 12989,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12689,
                      "src": "10097:9:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$12613_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                      }
                    },
                    "id": 12991,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 12990,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12982,
                      "src": "10107:11:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "10097:22:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$12613_storage",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10069:50:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 13004,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$12514",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 12998,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12994,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12988,
                              "src": "10137:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 12995,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12568,
                            "src": "10137:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12996,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12514,
                              "src": "10155:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 12997,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Boosted",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10155:21:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "10137:39:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$12514",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 13003,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12999,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12988,
                              "src": "10180:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 13000,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12568,
                            "src": "10180:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13001,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12514,
                              "src": "10198:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 13002,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "QuietEndingPeriod",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10198:31:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "10180:49:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "10137:92:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "70726f706f73616c20737461746520696e206e6f7420426f6f73746564206e6f72205175696574456e64696e67506572696f64",
                        "id": 13005,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10239:53:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d12753c56f593192768acab33c56c3c76e99c56e3892b0d2f229882577785553",
                          "typeString": "literal_string \"proposal state in not Boosted nor QuietEndingPeriod\""
                        },
                        "value": "proposal state in not Boosted nor QuietEndingPeriod"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d12753c56f593192768acab33c56c3c76e99c56e3892b0d2f229882577785553",
                          "typeString": "literal_string \"proposal state in not Boosted nor QuietEndingPeriod\""
                        }
                      ],
                      "id": 12993,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "10129:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13006,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10129:164:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13007,
                  "nodeType": "ExpressionStatement",
                  "src": "10129:164:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 13010,
                            "name": "_proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12982,
                            "src": "10320:11:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 13009,
                          "name": "_execute",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14496,
                          "src": "10311:8:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) returns (bool)"
                          }
                        },
                        "id": 13011,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10311:21:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "70726f706f73616c206e65656420746f20657870697265",
                        "id": 13012,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10334:25:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_194736d0946e0cd4d131aa98afe9f266adc8d4f15ccac91b5a140d100c4a55cc",
                          "typeString": "literal_string \"proposal need to expire\""
                        },
                        "value": "proposal need to expire"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_194736d0946e0cd4d131aa98afe9f266adc8d4f15ccac91b5a140d100c4a55cc",
                          "typeString": "literal_string \"proposal need to expire\""
                        }
                      ],
                      "id": 13008,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "10303:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13013,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10303:57:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13014,
                  "nodeType": "ExpressionStatement",
                  "src": "10303:57:57"
                },
                {
                  "assignments": [
                    13016
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13016,
                      "name": "expirationCallBountyPercentage",
                      "nodeType": "VariableDeclaration",
                      "scope": 13083,
                      "src": "10370:38:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 13015,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10370:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13037,
                  "initialValue": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "3135",
                                "id": 13033,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10561:2:57",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_15_by_1",
                                  "typeString": "int_const 15"
                                },
                                "value": "15"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_15_by_1",
                                  "typeString": "int_const 15"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 13026,
                                            "name": "proposal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12988,
                                            "src": "10537:8:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                            }
                                          },
                                          "id": 13027,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "times",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 12590,
                                          "src": "10537:14:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$3_storage",
                                            "typeString": "uint256[3] storage ref"
                                          }
                                        },
                                        "id": 13029,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 13028,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "10552:1:57",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "10537:17:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 13023,
                                          "name": "proposal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12988,
                                          "src": "10494:8:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                          }
                                        },
                                        "id": 13024,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "currentBoostedVotePeriodLimit",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 12574,
                                        "src": "10494:38:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 13025,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "add",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 15898,
                                      "src": "10494:42:57",
                                      "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": 13030,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10494:61:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 13021,
                                    "name": "now",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16784,
                                    "src": "10486:3:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 13022,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 15874,
                                  "src": "10486:7:57",
                                  "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": 13031,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10486:70:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 13032,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15850,
                              "src": "10486:74:57",
                              "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": 13034,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10486:78:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 13018,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10479:1:57",
                                "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"
                                }
                              ],
                              "id": 13017,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10474:4:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": "uint"
                            },
                            "id": 13019,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10474:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 13020,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "add",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 15898,
                          "src": "10474:11:57",
                          "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": 13035,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10474:91:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 13036,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "10473:93:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10370:196:57"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 13040,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 13038,
                      "name": "expirationCallBountyPercentage",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13016,
                      "src": "10580:30:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "313030",
                      "id": 13039,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10613:3:57",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_100_by_1",
                        "typeString": "int_const 100"
                      },
                      "value": "100"
                    },
                    "src": "10580:36:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 13046,
                  "nodeType": "IfStatement",
                  "src": "10576:103:57",
                  "trueBody": {
                    "id": 13045,
                    "nodeType": "Block",
                    "src": "10618:61:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13043,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 13041,
                            "name": "expirationCallBountyPercentage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13016,
                            "src": "10632:30:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "313030",
                            "id": 13042,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10665:3:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            },
                            "value": "100"
                          },
                          "src": "10632:36:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13044,
                        "nodeType": "ExpressionStatement",
                        "src": "10632:36:57"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 13051,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13047,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12988,
                        "src": "10688:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 13049,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "expirationCallBountyPercentage",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12586,
                      "src": "10688:39:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 13050,
                      "name": "expirationCallBountyPercentage",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13016,
                      "src": "10730:30:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10688:72:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 13052,
                  "nodeType": "ExpressionStatement",
                  "src": "10688:72:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 13064,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 13053,
                      "name": "expirationCallBounty",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12985,
                      "src": "10770:20:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "313030",
                          "id": 13062,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10854:3:57",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_100_by_1",
                            "typeString": "int_const 100"
                          },
                          "value": "100"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_100_by_1",
                            "typeString": "int_const 100"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13056,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12988,
                                  "src": "10828:8:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 13057,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "stakes",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12608,
                                "src": "10828:15:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                  "typeString": "mapping(uint256 => uint256)"
                                }
                              },
                              "id": 13059,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 13058,
                                "name": "YES",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12710,
                                "src": "10844:3:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10828:20:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 13054,
                              "name": "expirationCallBountyPercentage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13016,
                              "src": "10793:30:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 13055,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15826,
                            "src": "10793:34:57",
                            "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": 13060,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10793:56:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13061,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "div",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 15850,
                        "src": "10793:60:57",
                        "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": 13063,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10793:65:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10770:88:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 13065,
                  "nodeType": "ExpressionStatement",
                  "src": "10770:88:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13069,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16782,
                              "src": "10898:3:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 13070,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10898:10:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 13071,
                            "name": "expirationCallBounty",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12985,
                            "src": "10910:20:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 13067,
                            "name": "stakingToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12714,
                            "src": "10876:12:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$16748",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 13068,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 16690,
                          "src": "10876:21:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) external returns (bool)"
                          }
                        },
                        "id": 13072,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10876:55:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "7472616e7366657220746f206d73672e73656e646572206661696c6564",
                        "id": 13073,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10933:31:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b85ceb8ee02c2d2292ab8271b7e4c009f72c6e882f9263faea1f89e089f0781d",
                          "typeString": "literal_string \"transfer to msg.sender failed\""
                        },
                        "value": "transfer to msg.sender failed"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b85ceb8ee02c2d2292ab8271b7e4c009f72c6e882f9263faea1f89e089f0781d",
                          "typeString": "literal_string \"transfer to msg.sender failed\""
                        }
                      ],
                      "id": 13066,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "10868:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13074,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10868:97:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13075,
                  "nodeType": "ExpressionStatement",
                  "src": "10868:97:57"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 13077,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12982,
                        "src": "11001:11:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 13078,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16782,
                          "src": "11014:3:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 13079,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "11014:10:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 13080,
                        "name": "expirationCallBounty",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12985,
                        "src": "11026:20:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 13076,
                      "name": "ExpirationCallBounty",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12675,
                      "src": "10980:20:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,address,uint256)"
                      }
                    },
                    "id": 13081,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10980:67:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13082,
                  "nodeType": "EmitStatement",
                  "src": "10975:72:57"
                }
              ]
            },
            "documentation": "@dev executeBoosted try to execute a boosted or QuietEndingPeriod proposal if it is expired\n@param _proposalId the id of the proposal\n@return uint256 expirationCallBounty the bounty amount for the expiration call",
            "id": 13084,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "executeBoosted",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12983,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12982,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 13084,
                  "src": "9991:19:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12981,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9991:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9990:21:57"
            },
            "returnParameters": {
              "id": 12986,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12985,
                  "name": "expirationCallBounty",
                  "nodeType": "VariableDeclaration",
                  "scope": 13084,
                  "src": "10029:28:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12984,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10029:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10028:30:57"
            },
            "scope": 15047,
            "src": "9967:1087:57",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 13271,
              "nodeType": "Block",
              "src": "12178:1650:57",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 13106,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13100,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 13096,
                              "name": "_params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13088,
                              "src": "12196:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                                "typeString": "uint256[11] calldata"
                              }
                            },
                            "id": 13098,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 13097,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12204:1:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12196:10:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "313030",
                            "id": 13099,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12210:3:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            },
                            "value": "100"
                          },
                          "src": "12196:17:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13105,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 13101,
                              "name": "_params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13088,
                              "src": "12217:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                                "typeString": "uint256[11] calldata"
                              }
                            },
                            "id": 13103,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 13102,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12225:1:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12217:10:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "3530",
                            "id": 13104,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12231:2:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_50_by_1",
                              "typeString": "int_const 50"
                            },
                            "value": "50"
                          },
                          "src": "12217:16:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "12196:37:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "3530203c3d20717565756564566f7465526571756972656450657263656e74616765203c3d20313030",
                        "id": 13107,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12235:43:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_85b9f97a846fa88401fdf1381ec2257f07804de0b75677db4c2efd7a2ce62825",
                          "typeString": "literal_string \"50 <= queuedVoteRequiredPercentage <= 100\""
                        },
                        "value": "50 <= queuedVoteRequiredPercentage <= 100"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_85b9f97a846fa88401fdf1381ec2257f07804de0b75677db4c2efd7a2ce62825",
                          "typeString": "literal_string \"50 <= queuedVoteRequiredPercentage <= 100\""
                        }
                      ],
                      "id": 13095,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "12188:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13108,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12188:91:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13109,
                  "nodeType": "ExpressionStatement",
                  "src": "12188:91:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 13121,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13115,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 13111,
                              "name": "_params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13088,
                              "src": "12297:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                                "typeString": "uint256[11] calldata"
                              }
                            },
                            "id": 13113,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "34",
                              "id": 13112,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12305:1:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4_by_1",
                                "typeString": "int_const 4"
                              },
                              "value": "4"
                            },
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12297:10:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "3136303030",
                            "id": 13114,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12311:5:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_16000_by_1",
                              "typeString": "int_const 16000"
                            },
                            "value": "16000"
                          },
                          "src": "12297:19:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13120,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 13116,
                              "name": "_params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13088,
                              "src": "12320:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                                "typeString": "uint256[11] calldata"
                              }
                            },
                            "id": 13118,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "34",
                              "id": 13117,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12328:1:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4_by_1",
                                "typeString": "int_const 4"
                              },
                              "value": "4"
                            },
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12320:10:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31303030",
                            "id": 13119,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12333:4:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1000_by_1",
                              "typeString": "int_const 1000"
                            },
                            "value": "1000"
                          },
                          "src": "12320:17:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "12297:40:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "31303030203c207468726573686f6c64436f6e7374203c3d203136303030",
                        "id": 13122,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12339:32:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_daddeca132c5a35f259acc956e39955b67e80315dbd0a39292b027685447fb58",
                          "typeString": "literal_string \"1000 < thresholdConst <= 16000\""
                        },
                        "value": "1000 < thresholdConst <= 16000"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_daddeca132c5a35f259acc956e39955b67e80315dbd0a39292b027685447fb58",
                          "typeString": "literal_string \"1000 < thresholdConst <= 16000\""
                        }
                      ],
                      "id": 13110,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "12289:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13123,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12289:83:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13124,
                  "nodeType": "ExpressionStatement",
                  "src": "12289:83:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 13130,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13126,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13088,
                            "src": "12390:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 13128,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "37",
                            "id": 13127,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12398:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_7_by_1",
                              "typeString": "int_const 7"
                            },
                            "value": "7"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12390:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "313030",
                          "id": 13129,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12404:3:57",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_100_by_1",
                            "typeString": "int_const 100"
                          },
                          "value": "100"
                        },
                        "src": "12390:17:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "766f7465727352657075746174696f6e4c6f7373526174696f203c3d20313030",
                        "id": 13131,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12409:34:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b9a8ef96bdbf8c6f5867a44627f3e55d258417d72b6eee622f0941021e48ccc2",
                          "typeString": "literal_string \"votersReputationLossRatio <= 100\""
                        },
                        "value": "votersReputationLossRatio <= 100"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b9a8ef96bdbf8c6f5867a44627f3e55d258417d72b6eee622f0941021e48ccc2",
                          "typeString": "literal_string \"votersReputationLossRatio <= 100\""
                        }
                      ],
                      "id": 13125,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "12382:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13132,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12382:62:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13133,
                  "nodeType": "ExpressionStatement",
                  "src": "12382:62:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 13141,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13135,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13088,
                            "src": "12462:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 13137,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 13136,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12470:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12462:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13138,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13088,
                            "src": "12476:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 13140,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "35",
                            "id": 13139,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12484:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_5_by_1",
                              "typeString": "int_const 5"
                            },
                            "value": "5"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12476:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "12462:24:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "626f6f73746564566f7465506572696f644c696d6974203e3d207175696574456e64696e67506572696f64",
                        "id": 13142,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12488:45:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_609d5e4f75f374c5d875da125e2b6693907dc86231a6a7783cbd890bcb51f823",
                          "typeString": "literal_string \"boostedVotePeriodLimit >= quietEndingPeriod\""
                        },
                        "value": "boostedVotePeriodLimit >= quietEndingPeriod"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_609d5e4f75f374c5d875da125e2b6693907dc86231a6a7783cbd890bcb51f823",
                          "typeString": "literal_string \"boostedVotePeriodLimit >= quietEndingPeriod\""
                        }
                      ],
                      "id": 13134,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "12454:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13143,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12454:80:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13144,
                  "nodeType": "ExpressionStatement",
                  "src": "12454:80:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 13150,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13146,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13088,
                            "src": "12552:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 13148,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "38",
                            "id": 13147,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12560:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_8_by_1",
                              "typeString": "int_const 8"
                            },
                            "value": "8"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12552:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 13149,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12565:1:57",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "12552:14:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6d696e696d756d44616f426f756e74792073686f756c64206265203e2030",
                        "id": 13151,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12568:32:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9a2fb70181672a535ab2f25b5eb32644096d5daab13cf3cb8ef2cfc2561af9a3",
                          "typeString": "literal_string \"minimumDaoBounty should be > 0\""
                        },
                        "value": "minimumDaoBounty should be > 0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9a2fb70181672a535ab2f25b5eb32644096d5daab13cf3cb8ef2cfc2561af9a3",
                          "typeString": "literal_string \"minimumDaoBounty should be > 0\""
                        }
                      ],
                      "id": 13145,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "12544:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13152,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12544:57:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13153,
                  "nodeType": "ExpressionStatement",
                  "src": "12544:57:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 13159,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13155,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13088,
                            "src": "12619:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 13157,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "39",
                            "id": 13156,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12627:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_9_by_1",
                              "typeString": "int_const 9"
                            },
                            "value": "9"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12619:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 13158,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12632:1:57",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "12619:14:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "64616f426f756e7479436f6e73742073686f756c64206265203e2030",
                        "id": 13160,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12635:30:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_996a184b88eb3effd28e9cef20fafeecddc7873295cdda23c6bb178b43ff4ba3",
                          "typeString": "literal_string \"daoBountyConst should be > 0\""
                        },
                        "value": "daoBountyConst should be > 0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_996a184b88eb3effd28e9cef20fafeecddc7873295cdda23c6bb178b43ff4ba3",
                          "typeString": "literal_string \"daoBountyConst should be > 0\""
                        }
                      ],
                      "id": 13154,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "12611:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13161,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12611:55:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13162,
                  "nodeType": "ExpressionStatement",
                  "src": "12611:55:57"
                },
                {
                  "assignments": [
                    13164
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13164,
                      "name": "paramsHash",
                      "nodeType": "VariableDeclaration",
                      "scope": 13271,
                      "src": "12677:18:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 13163,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "12677:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13169,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 13166,
                        "name": "_params",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13088,
                        "src": "12716:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                          "typeString": "uint256[11] calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 13167,
                        "name": "_voteOnBehalf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13090,
                        "src": "12725:13:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                          "typeString": "uint256[11] calldata"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 13165,
                      "name": "getParametersHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13992,
                      "src": "12698:17:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_array$_t_uint256_$11_memory_ptr_$_t_address_$returns$_t_bytes32_$",
                        "typeString": "function (uint256[11] memory,address) pure returns (bytes32)"
                      }
                    },
                    "id": 13168,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12698:41:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12677:62:57"
                },
                {
                  "assignments": [
                    13171
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13171,
                      "name": "limitExponent",
                      "nodeType": "VariableDeclaration",
                      "scope": 13271,
                      "src": "12819:21:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 13170,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12819:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13173,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "313732",
                    "id": 13172,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "12843:3:57",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_172_by_1",
                      "typeString": "int_const 172"
                    },
                    "value": "172"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12819:27:57"
                },
                {
                  "assignments": [
                    13175
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13175,
                      "name": "j",
                      "nodeType": "VariableDeclaration",
                      "scope": 13271,
                      "src": "12883:9:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 13174,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12883:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13177,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "32",
                    "id": 13176,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "12895:1:57",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2_by_1",
                      "typeString": "int_const 2"
                    },
                    "value": "2"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12883:13:57"
                },
                {
                  "body": {
                    "id": 13218,
                    "nodeType": "Block",
                    "src": "12949:173:57",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 13205,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 13195,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 13191,
                                    "name": "_params",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13088,
                                    "src": "12968:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                                      "typeString": "uint256[11] calldata"
                                    }
                                  },
                                  "id": 13193,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "34",
                                    "id": 13192,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12976:1:57",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_4_by_1",
                                      "typeString": "int_const 4"
                                    },
                                    "value": "4"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "12968:10:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 13194,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13179,
                                  "src": "12981:1:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12968:14:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 13196,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "12967:16:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 13203,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 13197,
                                    "name": "_params",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13088,
                                    "src": "12988:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                                      "typeString": "uint256[11] calldata"
                                    }
                                  },
                                  "id": 13199,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "34",
                                    "id": 13198,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12996:1:57",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_4_by_1",
                                      "typeString": "int_const 4"
                                    },
                                    "value": "4"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "12988:10:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 13202,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 13200,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13179,
                                    "src": "13002:1:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 13201,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13004:1:57",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "13002:3:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12988:17:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 13204,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "12987:19:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "12967:39:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 13214,
                        "nodeType": "IfStatement",
                        "src": "12963:132:57",
                        "trueBody": {
                          "id": 13213,
                          "nodeType": "Block",
                          "src": "13008:87:57",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 13210,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 13206,
                                  "name": "limitExponent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13171,
                                  "src": "13026:13:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 13209,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 13207,
                                    "name": "limitExponent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13171,
                                    "src": "13042:13:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 13208,
                                    "name": "j",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13175,
                                    "src": "13056:1:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "13042:15:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13026:31:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 13211,
                              "nodeType": "ExpressionStatement",
                              "src": "13026:31:57"
                            },
                            {
                              "id": 13212,
                              "nodeType": "Break",
                              "src": "13075:5:57"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13216,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "13108:3:57",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 13215,
                            "name": "j",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13175,
                            "src": "13108:1:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13217,
                        "nodeType": "ExpressionStatement",
                        "src": "13108:3:57"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 13184,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 13182,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13179,
                      "src": "12929:1:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "3136303030",
                      "id": 13183,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12933:5:57",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_16000_by_1",
                        "typeString": "int_const 16000"
                      },
                      "value": "16000"
                    },
                    "src": "12929:9:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 13219,
                  "initializationExpression": {
                    "assignments": [
                      13179
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 13179,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 13219,
                        "src": "12911:9:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13178,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12911:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 13181,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "32303030",
                      "id": 13180,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12923:4:57",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_2000_by_1",
                        "typeString": "int_const 2000"
                      },
                      "value": "2000"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "12911:16:57"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 13189,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 13185,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13179,
                        "src": "12940:1:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 13188,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 13186,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13179,
                          "src": "12944:1:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "32",
                          "id": 13187,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12946:1:57",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        "src": "12944:3:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "12940:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 13190,
                    "nodeType": "ExpressionStatement",
                    "src": "12940:7:57"
                  },
                  "nodeType": "ForStatement",
                  "src": "12906:216:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 13267,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 13220,
                        "name": "parameters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12685,
                        "src": "13132:10:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$12548_storage_$",
                          "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                        }
                      },
                      "id": 13222,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 13221,
                        "name": "paramsHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13164,
                        "src": "13143:10:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "13132:22:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$12548_storage",
                        "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13224,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13088,
                            "src": "13212:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 13226,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 13225,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13220:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13212:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13227,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13088,
                            "src": "13259:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 13229,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 13228,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13267:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13259:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13230,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13088,
                            "src": "13307:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 13232,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 13231,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13315:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13307:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13233,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13088,
                            "src": "13358:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 13235,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "33",
                            "id": 13234,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13366:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_3_by_1",
                              "typeString": "int_const 3"
                            },
                            "value": "3"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13358:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "31303030",
                                  "id": 13243,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13434:4:57",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1000_by_1",
                                    "typeString": "int_const 1000"
                                  },
                                  "value": "1000"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_1000_by_1",
                                    "typeString": "int_const 1000"
                                  }
                                ],
                                "id": 13242,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "13426:7:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint216_$",
                                  "typeString": "type(uint216)"
                                },
                                "typeName": "uint216"
                              },
                              "id": 13244,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13426:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint216",
                                "typeString": "uint216"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint216",
                                "typeString": "uint216"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 13237,
                                    "name": "_params",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13088,
                                    "src": "13405:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                                      "typeString": "uint256[11] calldata"
                                    }
                                  },
                                  "id": 13239,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "34",
                                    "id": 13238,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13413:1:57",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_4_by_1",
                                      "typeString": "int_const 4"
                                    },
                                    "value": "4"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "13405:10:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 13236,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "13397:7:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint216_$",
                                  "typeString": "type(uint216)"
                                },
                                "typeName": "uint216"
                              },
                              "id": 13240,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13397:19:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint216",
                                "typeString": "uint216"
                              }
                            },
                            "id": 13241,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "fraction",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11134,
                            "src": "13397:28:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint216_$_t_uint216_$returns$_t_uint256_$bound_to$_t_uint216_$",
                              "typeString": "function (uint216,uint216) pure returns (uint256)"
                            }
                          },
                          "id": 13245,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13397:43:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 13246,
                          "name": "limitExponent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13171,
                          "src": "13473:13:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13247,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13088,
                            "src": "13519:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 13249,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "35",
                            "id": 13248,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13527:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_5_by_1",
                              "typeString": "int_const 5"
                            },
                            "value": "5"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13519:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13250,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13088,
                            "src": "13563:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 13252,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "36",
                            "id": 13251,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13571:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_6_by_1",
                              "typeString": "int_const 6"
                            },
                            "value": "6"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13563:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13253,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13088,
                            "src": "13613:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 13255,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "37",
                            "id": 13254,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13621:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_7_by_1",
                              "typeString": "int_const 7"
                            },
                            "value": "7"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13613:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13256,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13088,
                            "src": "13654:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 13258,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "38",
                            "id": 13257,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13662:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_8_by_1",
                              "typeString": "int_const 8"
                            },
                            "value": "8"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13654:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13259,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13088,
                            "src": "13693:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 13261,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "39",
                            "id": 13260,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13701:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_9_by_1",
                              "typeString": "int_const 9"
                            },
                            "value": "9"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13693:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13262,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13088,
                            "src": "13732:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 13264,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "3130",
                            "id": 13263,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13740:2:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_10_by_1",
                              "typeString": "int_const 10"
                            },
                            "value": "10"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13732:11:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 13265,
                          "name": "_voteOnBehalf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13090,
                          "src": "13770:13:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 13223,
                        "name": "Parameters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12548,
                        "src": "13157:10:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Parameters_$12548_storage_ptr_$",
                          "typeString": "type(struct GenesisProtocolLogic.Parameters storage pointer)"
                        }
                      },
                      "id": 13266,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [
                        "queuedVoteRequiredPercentage",
                        "queuedVotePeriodLimit",
                        "boostedVotePeriodLimit",
                        "preBoostedVotePeriodLimit",
                        "thresholdConst",
                        "limitExponentValue",
                        "quietEndingPeriod",
                        "proposingRepReward",
                        "votersReputationLossRatio",
                        "minimumDaoBounty",
                        "daoBountyConst",
                        "activationTime",
                        "voteOnBehalf"
                      ],
                      "nodeType": "FunctionCall",
                      "src": "13157:637:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$12548_memory",
                        "typeString": "struct GenesisProtocolLogic.Parameters memory"
                      }
                    },
                    "src": "13132:662:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Parameters_$12548_storage",
                      "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                    }
                  },
                  "id": 13268,
                  "nodeType": "ExpressionStatement",
                  "src": "13132:662:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 13269,
                    "name": "paramsHash",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13164,
                    "src": "13811:10:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 13094,
                  "id": 13270,
                  "nodeType": "Return",
                  "src": "13804:17:57"
                }
              ]
            },
            "documentation": "@dev hash the parameters, save them if necessary, and return the hash value\n@param _params a parameters array\n   _params[0] - _queuedVoteRequiredPercentage,\n   _params[1] - _queuedVotePeriodLimit, //the time limit for a proposal to be in an absolute voting mode.\n   _params[2] - _boostedVotePeriodLimit, //the time limit for a proposal to be in an relative voting mode.\n   _params[3] - _preBoostedVotePeriodLimit, //the time limit for a proposal to be in an preparation\n                 state (stable) before boosted.\n   _params[4] -_thresholdConst\n   _params[5] -_quietEndingPeriod\n   _params[6] -_proposingRepReward\n   _params[7] -_votersReputationLossRatio\n   _params[8] -_minimumDaoBounty\n   _params[9] -_daoBountyConst\n   _params[10] -_activationTime\n@param _voteOnBehalf - authorized to vote on behalf of others.",
            "id": 13272,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setParameters",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13091,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13088,
                  "name": "_params",
                  "nodeType": "VariableDeclaration",
                  "scope": 13272,
                  "src": "12031:25:57",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                    "typeString": "uint256[11]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 13085,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "12031:4:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 13087,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "3131",
                      "id": 13086,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12036:2:57",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "11"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "12031:8:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$11_storage_ptr",
                      "typeString": "uint256[11]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13090,
                  "name": "_voteOnBehalf",
                  "nodeType": "VariableDeclaration",
                  "scope": 13272,
                  "src": "12112:21:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13089,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12112:7:57",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12021:118:57"
            },
            "returnParameters": {
              "id": 13094,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13093,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 13272,
                  "src": "12165:7:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13092,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "12165:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12164:9:57"
            },
            "scope": 15047,
            "src": "11999:1829:57",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 13731,
              "nodeType": "Block",
              "src": "14486:3933:57",
              "statements": [
                {
                  "assignments": [
                    13284
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13284,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 13731,
                      "src": "14496:25:57",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 13283,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12613,
                        "src": "14496:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13288,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 13285,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12689,
                      "src": "14524:9:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$12613_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                      }
                    },
                    "id": 13287,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 13286,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13274,
                      "src": "14534:11:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "14524:22:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$12613_storage",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14496:50:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 13302,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_ProposalState_$12514",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              },
                              "id": 13294,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13290,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13284,
                                  "src": "14565:8:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 13291,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "state",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12568,
                                "src": "14565:14:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$12514",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13292,
                                  "name": "ProposalState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12514,
                                  "src": "14583:13:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                    "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                  }
                                },
                                "id": 13293,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "Executed",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "14583:22:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$12514",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                }
                              },
                              "src": "14565:40:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 13295,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "14564:42:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_ProposalState_$12514",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              },
                              "id": 13300,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13296,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13284,
                                  "src": "14609:8:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 13297,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "state",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12568,
                                "src": "14609:14:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$12514",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13298,
                                  "name": "ProposalState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12514,
                                  "src": "14627:13:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                    "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                  }
                                },
                                "id": 13299,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "ExpiredInQueue",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "14627:28:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$12514",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                }
                              },
                              "src": "14609:46:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 13301,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "14608:48:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "14564:92:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "50726f706f73616c2073686f756c64206265204578656375746564206f722045787069726564496e5175657565",
                        "id": 13303,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14666:47:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_4e192fc0c0c06bbf22b55d1039c663d5c5a02b944d66c77797d07c1d4ad01bb5",
                          "typeString": "literal_string \"Proposal should be Executed or ExpiredInQueue\""
                        },
                        "value": "Proposal should be Executed or ExpiredInQueue"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_4e192fc0c0c06bbf22b55d1039c663d5c5a02b944d66c77797d07c1d4ad01bb5",
                          "typeString": "literal_string \"Proposal should be Executed or ExpiredInQueue\""
                        }
                      ],
                      "id": 13289,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "14556:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13304,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14556:158:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13305,
                  "nodeType": "ExpressionStatement",
                  "src": "14556:158:57"
                },
                {
                  "assignments": [
                    13307
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13307,
                      "name": "params",
                      "nodeType": "VariableDeclaration",
                      "scope": 13731,
                      "src": "14724:24:57",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$12548_memory_ptr",
                        "typeString": "struct GenesisProtocolLogic.Parameters"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 13306,
                        "name": "Parameters",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12548,
                        "src": "14724:10:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$12548_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Parameters"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13312,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 13308,
                      "name": "parameters",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12685,
                      "src": "14751:10:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$12548_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                      }
                    },
                    "id": 13311,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13309,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13284,
                        "src": "14762:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 13310,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "paramsHash",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12576,
                      "src": "14762:19:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "14751:31:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Parameters_$12548_storage",
                      "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14724:58:57"
                },
                {
                  "assignments": [
                    13314
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13314,
                      "name": "lostReputation",
                      "nodeType": "VariableDeclaration",
                      "scope": 13731,
                      "src": "14792:22:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 13313,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "14792:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13315,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14792:22:57"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 13319,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13316,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13284,
                        "src": "14828:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 13317,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "winningVote",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12570,
                      "src": "14828:20:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 13318,
                      "name": "YES",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12710,
                      "src": "14852:3:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14828:27:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 13335,
                    "nodeType": "Block",
                    "src": "14933:71:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13333,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 13328,
                            "name": "lostReputation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13314,
                            "src": "14947:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13329,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13284,
                                "src": "14964:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 13330,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "preBoostedVotes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12600,
                              "src": "14964:24:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 13332,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 13331,
                              "name": "YES",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12710,
                              "src": "14989:3:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "14964:29:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14947:46:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13334,
                        "nodeType": "ExpressionStatement",
                        "src": "14947:46:57"
                      }
                    ]
                  },
                  "id": 13336,
                  "nodeType": "IfStatement",
                  "src": "14824:180:57",
                  "trueBody": {
                    "id": 13327,
                    "nodeType": "Block",
                    "src": "14857:70:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13325,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 13320,
                            "name": "lostReputation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13314,
                            "src": "14871:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13321,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13284,
                                "src": "14888:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 13322,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "preBoostedVotes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12600,
                              "src": "14888:24:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 13324,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 13323,
                              "name": "NO",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12707,
                              "src": "14913:2:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "14888:28:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14871:45:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13326,
                        "nodeType": "ExpressionStatement",
                        "src": "14871:45:57"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 13346,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 13337,
                      "name": "lostReputation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13314,
                      "src": "15013:14:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 13345,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13340,
                                  "name": "params",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13307,
                                  "src": "15050:6:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Parameters_$12548_memory_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Parameters memory"
                                  }
                                },
                                "id": 13341,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "votersReputationLossRatio",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12539,
                                "src": "15050:32:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 13338,
                                "name": "lostReputation",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13314,
                                "src": "15031:14:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 13339,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15826,
                              "src": "15031:18:57",
                              "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": 13342,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15031:52:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 13343,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "15030:54:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "/",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "313030",
                        "id": 13344,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15085:3:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_100_by_1",
                          "typeString": "int_const 100"
                        },
                        "value": "100"
                      },
                      "src": "15030:58:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "15013:75:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 13347,
                  "nodeType": "ExpressionStatement",
                  "src": "15013:75:57"
                },
                {
                  "assignments": [
                    13349
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13349,
                      "name": "staker",
                      "nodeType": "VariableDeclaration",
                      "scope": 13731,
                      "src": "15118:21:57",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Staker"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 13348,
                        "name": "Staker",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12562,
                        "src": "15118:6:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Staker"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13354,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13350,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13284,
                        "src": "15142:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 13351,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "stakers",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12612,
                      "src": "15142:16:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$12562_storage_$",
                        "typeString": "mapping(address => struct GenesisProtocolLogic.Staker storage ref)"
                      }
                    },
                    "id": 13353,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 13352,
                      "name": "_beneficiary",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13276,
                      "src": "15159:12:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "15142:30:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Staker_$12562_storage",
                      "typeString": "struct GenesisProtocolLogic.Staker storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15118:54:57"
                },
                {
                  "assignments": [
                    13356
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13356,
                      "name": "totalStakes",
                      "nodeType": "VariableDeclaration",
                      "scope": 13731,
                      "src": "15182:19:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 13355,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "15182:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13367,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 13362,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13284,
                            "src": "15228:8:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                            }
                          },
                          "id": 13363,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "stakes",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12608,
                          "src": "15228:15:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                            "typeString": "mapping(uint256 => uint256)"
                          }
                        },
                        "id": 13365,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 13364,
                          "name": "YES",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12710,
                          "src": "15244:3:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "15228:20:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 13357,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13284,
                            "src": "15204:8:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                            }
                          },
                          "id": 13358,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "stakes",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12608,
                          "src": "15204:15:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                            "typeString": "mapping(uint256 => uint256)"
                          }
                        },
                        "id": 13360,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 13359,
                          "name": "NO",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12707,
                          "src": "15220:2:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "15204:19:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 13361,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "add",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15898,
                      "src": "15204:23:57",
                      "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": 13366,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15204:45:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15182:67:57"
                },
                {
                  "assignments": [
                    13369
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13369,
                      "name": "totalWinningStakes",
                      "nodeType": "VariableDeclaration",
                      "scope": 13731,
                      "src": "15259:26:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 13368,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "15259:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13375,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13370,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13284,
                        "src": "15288:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 13371,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "stakes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12608,
                      "src": "15288:15:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                        "typeString": "mapping(uint256 => uint256)"
                      }
                    },
                    "id": 13374,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13372,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13284,
                        "src": "15304:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 13373,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "winningVote",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12570,
                      "src": "15304:20:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "15288:37:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15259:66:57"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 13379,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13376,
                        "name": "staker",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13349,
                        "src": "15340:6:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                        }
                      },
                      "id": 13377,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "amount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12559,
                      "src": "15340:13:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 13378,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "15356:1:57",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "15340:17:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 13472,
                  "nodeType": "IfStatement",
                  "src": "15336:980:57",
                  "trueBody": {
                    "id": 13471,
                    "nodeType": "Block",
                    "src": "15359:957:57",
                    "statements": [
                      {
                        "assignments": [
                          13381
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13381,
                            "name": "totalStakesLeftAfterCallBounty",
                            "nodeType": "VariableDeclaration",
                            "scope": 13471,
                            "src": "15373:38:57",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 13380,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15373:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13396,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "313030",
                                  "id": 13393,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15512:3:57",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_100_by_1",
                                    "typeString": "int_const 100"
                                  },
                                  "value": "100"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_100_by_1",
                                    "typeString": "int_const 100"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 13387,
                                          "name": "proposal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13284,
                                          "src": "15486:8:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                          }
                                        },
                                        "id": 13388,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "stakes",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 12608,
                                        "src": "15486:15:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                          "typeString": "mapping(uint256 => uint256)"
                                        }
                                      },
                                      "id": 13390,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 13389,
                                        "name": "YES",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12710,
                                        "src": "15502:3:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "15486:20:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 13384,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13284,
                                        "src": "15442:8:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                        }
                                      },
                                      "id": 13385,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "expirationCallBountyPercentage",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 12586,
                                      "src": "15442:39:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 13386,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 15826,
                                    "src": "15442:43:57",
                                    "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": 13391,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "15442:65:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 13392,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "div",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 15850,
                                "src": "15442:69:57",
                                "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": 13394,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15442:74:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 13382,
                              "name": "totalStakes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13356,
                              "src": "15426:11:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 13383,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15874,
                            "src": "15426:15:57",
                            "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": 13395,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15426:91:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15373:144:57"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$12514",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 13401,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13397,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13284,
                              "src": "15535:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 13398,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12568,
                            "src": "15535:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13399,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12514,
                              "src": "15553:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 13400,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "ExpiredInQueue",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "15553:28:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "15535:46:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 13414,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13410,
                                "name": "staker",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13349,
                                "src": "15738:6:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                                }
                              },
                              "id": 13411,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "vote",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12557,
                              "src": "15738:11:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13412,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13284,
                                "src": "15753:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 13413,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "winningVote",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12570,
                              "src": "15753:20:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "15738:35:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": null,
                          "id": 13463,
                          "nodeType": "IfStatement",
                          "src": "15734:541:57",
                          "trueBody": {
                            "id": 13462,
                            "nodeType": "Block",
                            "src": "15775:500:57",
                            "statements": [
                              {
                                "condition": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 13418,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 13415,
                                      "name": "staker",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13349,
                                      "src": "15797:6:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                                      }
                                    },
                                    "id": 13416,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "vote",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12557,
                                    "src": "15797:11:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 13417,
                                    "name": "YES",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12710,
                                    "src": "15812:3:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "15797:18:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "id": 13460,
                                  "nodeType": "Block",
                                  "src": "16137:124:57",
                                  "statements": [
                                    {
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 13458,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 13447,
                                            "name": "rewards",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 13281,
                                            "src": "16159:7:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                              "typeString": "uint256[3] memory"
                                            }
                                          },
                                          "id": 13449,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 13448,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "16167:1:57",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": true,
                                          "nodeType": "IndexAccess",
                                          "src": "16159:10:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 13457,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "components": [
                                              {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 13453,
                                                    "name": "totalStakesLeftAfterCallBounty",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 13381,
                                                    "src": "16191:30:57",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "id": 13450,
                                                      "name": "staker",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 13349,
                                                      "src": "16173:6:57",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                                                        "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                                                      }
                                                    },
                                                    "id": 13451,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "amount",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 12559,
                                                    "src": "16173:13:57",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 13452,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "mul",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 15826,
                                                  "src": "16173:17:57",
                                                  "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": 13454,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "16173:49:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "id": 13455,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "16172:51:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "/",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 13456,
                                            "name": "totalWinningStakes",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 13369,
                                            "src": "16224:18:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "16172:70:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "16159:83:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 13459,
                                      "nodeType": "ExpressionStatement",
                                      "src": "16159:83:57"
                                    }
                                  ]
                                },
                                "id": 13461,
                                "nodeType": "IfStatement",
                                "src": "15793:468:57",
                                "trueBody": {
                                  "id": 13446,
                                  "nodeType": "Block",
                                  "src": "15817:314:57",
                                  "statements": [
                                    {
                                      "condition": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 13422,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 13419,
                                            "name": "proposal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 13284,
                                            "src": "15843:8:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                            }
                                          },
                                          "id": 13420,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "daoBounty",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 12580,
                                          "src": "15843:18:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 13421,
                                          "name": "totalStakesLeftAfterCallBounty",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13381,
                                          "src": "15864:30:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "15843:51:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "falseBody": null,
                                      "id": 13445,
                                      "nodeType": "IfStatement",
                                      "src": "15839:274:57",
                                      "trueBody": {
                                        "id": 13444,
                                        "nodeType": "Block",
                                        "src": "15896:217:57",
                                        "statements": [
                                          {
                                            "assignments": [
                                              13424
                                            ],
                                            "declarations": [
                                              {
                                                "constant": false,
                                                "id": 13424,
                                                "name": "_totalStakes",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 13444,
                                                "src": "15922:20:57",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "typeName": {
                                                  "id": 13423,
                                                  "name": "uint256",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "15922:7:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "value": null,
                                                "visibility": "internal"
                                              }
                                            ],
                                            "id": 13430,
                                            "initialValue": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 13427,
                                                    "name": "proposal",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 13284,
                                                    "src": "15980:8:57",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                      "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                    }
                                                  },
                                                  "id": 13428,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "daoBounty",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 12580,
                                                  "src": "15980:18:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 13425,
                                                  "name": "totalStakesLeftAfterCallBounty",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 13381,
                                                  "src": "15945:30:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 13426,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sub",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 15874,
                                                "src": "15945:34:57",
                                                "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": 13429,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "15945:54:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "VariableDeclarationStatement",
                                            "src": "15922:77:57"
                                          },
                                          {
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 13442,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "argumentTypes": null,
                                                "baseExpression": {
                                                  "argumentTypes": null,
                                                  "id": 13431,
                                                  "name": "rewards",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 13281,
                                                  "src": "16025:7:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                                    "typeString": "uint256[3] memory"
                                                  }
                                                },
                                                "id": 13433,
                                                "indexExpression": {
                                                  "argumentTypes": null,
                                                  "hexValue": "30",
                                                  "id": 13432,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "16033:1:57",
                                                  "subdenomination": null,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                  },
                                                  "value": "0"
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": true,
                                                "nodeType": "IndexAccess",
                                                "src": "16025:10:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "argumentTypes": null,
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 13441,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "argumentTypes": null,
                                                  "components": [
                                                    {
                                                      "argumentTypes": null,
                                                      "arguments": [
                                                        {
                                                          "argumentTypes": null,
                                                          "id": 13437,
                                                          "name": "_totalStakes",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 13424,
                                                          "src": "16057:12:57",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": [
                                                          {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        ],
                                                        "expression": {
                                                          "argumentTypes": null,
                                                          "expression": {
                                                            "argumentTypes": null,
                                                            "id": 13434,
                                                            "name": "staker",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 13349,
                                                            "src": "16039:6:57",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                                                              "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                                                            }
                                                          },
                                                          "id": 13435,
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "memberName": "amount",
                                                          "nodeType": "MemberAccess",
                                                          "referencedDeclaration": 12559,
                                                          "src": "16039:13:57",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "id": 13436,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "mul",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 15826,
                                                        "src": "16039:17:57",
                                                        "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": 13438,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "kind": "functionCall",
                                                      "lValueRequested": false,
                                                      "names": [],
                                                      "nodeType": "FunctionCall",
                                                      "src": "16039:31:57",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    }
                                                  ],
                                                  "id": 13439,
                                                  "isConstant": false,
                                                  "isInlineArray": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "TupleExpression",
                                                  "src": "16038:33:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "/",
                                                "rightExpression": {
                                                  "argumentTypes": null,
                                                  "id": 13440,
                                                  "name": "totalWinningStakes",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 13369,
                                                  "src": "16072:18:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "src": "16038:52:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "16025:65:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 13443,
                                            "nodeType": "ExpressionStatement",
                                            "src": "16025:65:57"
                                          }
                                        ]
                                      }
                                    }
                                  ]
                                }
                              }
                            ]
                          }
                        },
                        "id": 13464,
                        "nodeType": "IfStatement",
                        "src": "15531:744:57",
                        "trueBody": {
                          "id": 13409,
                          "nodeType": "Block",
                          "src": "15583:145:57",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 13407,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 13402,
                                    "name": "rewards",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13281,
                                    "src": "15687:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                      "typeString": "uint256[3] memory"
                                    }
                                  },
                                  "id": 13404,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 13403,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15695:1:57",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "15687:10:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 13405,
                                    "name": "staker",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13349,
                                    "src": "15700:6:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                                    }
                                  },
                                  "id": 13406,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "amount",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12559,
                                  "src": "15700:13:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "15687:26:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 13408,
                              "nodeType": "ExpressionStatement",
                              "src": "15687:26:57"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13469,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13465,
                              "name": "staker",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13349,
                              "src": "16288:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                              }
                            },
                            "id": 13467,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12559,
                            "src": "16288:13:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 13468,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16304:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "16288:17:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13470,
                        "nodeType": "ExpressionStatement",
                        "src": "16288:17:57"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 13494,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 13489,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 13483,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 13476,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13473,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13284,
                              "src": "16367:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 13474,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "daoRedeemItsWinnings",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12592,
                            "src": "16367:29:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 13475,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16400:5:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "16367:38:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 13482,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 13477,
                            "name": "_beneficiary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13276,
                            "src": "16421:12:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 13478,
                              "name": "organizations",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12697,
                              "src": "16437:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                "typeString": "mapping(bytes32 => address)"
                              }
                            },
                            "id": 13481,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13479,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13284,
                                "src": "16451:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 13480,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "organizationId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12564,
                              "src": "16451:23:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "16437:38:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "16421:54:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "16367:108:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_ProposalState_$12514",
                          "typeString": "enum GenesisProtocolLogic.ProposalState"
                        },
                        "id": 13488,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 13484,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13284,
                            "src": "16491:8:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                            }
                          },
                          "id": 13485,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "state",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12568,
                          "src": "16491:14:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ProposalState_$12514",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 13486,
                            "name": "ProposalState",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12514,
                            "src": "16509:13:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                              "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                            }
                          },
                          "id": 13487,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "ExpiredInQueue",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "16509:28:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ProposalState_$12514",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          }
                        },
                        "src": "16491:46:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "16367:170:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 13493,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 13490,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13284,
                          "src": "16553:8:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                          }
                        },
                        "id": 13491,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "winningVote",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12570,
                        "src": "16553:20:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 13492,
                        "name": "NO",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12707,
                        "src": "16577:2:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "16553:26:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "16367:212:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 13524,
                  "nodeType": "IfStatement",
                  "src": "16363:414:57",
                  "trueBody": {
                    "id": 13523,
                    "nodeType": "Block",
                    "src": "16581:196:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13515,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 13495,
                              "name": "rewards",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13281,
                              "src": "16595:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                "typeString": "uint256[3] memory"
                              }
                            },
                            "id": 13497,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 13496,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16603:1:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "16595:10:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13512,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13284,
                                  "src": "16697:8:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 13513,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "daoBounty",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12580,
                                "src": "16697:18:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 13509,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 13505,
                                              "name": "totalStakes",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 13356,
                                              "src": "16659:11:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 13502,
                                                "name": "proposal",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 13284,
                                                "src": "16636:8:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                }
                                              },
                                              "id": 13503,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "daoBounty",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 12580,
                                              "src": "16636:18:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 13504,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "mul",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 15826,
                                            "src": "16636:22:57",
                                            "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": 13506,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "16636:35:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 13507,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "16635:37:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 13508,
                                      "name": "totalWinningStakes",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13369,
                                      "src": "16673:18:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "16635:56:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 13498,
                                      "name": "rewards",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13281,
                                      "src": "16620:7:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                        "typeString": "uint256[3] memory"
                                      }
                                    },
                                    "id": 13500,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 13499,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "16628:1:57",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "16620:10:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 13501,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 15898,
                                  "src": "16620:14:57",
                                  "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": 13510,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16620:72:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 13511,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15874,
                              "src": "16620:76:57",
                              "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": 13514,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16620:96:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16595:121:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13516,
                        "nodeType": "ExpressionStatement",
                        "src": "16595:121:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13521,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13517,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13284,
                              "src": "16730:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 13519,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "daoRedeemItsWinnings",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12592,
                            "src": "16730:29:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 13520,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16762:4:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "16730:36:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13522,
                        "nodeType": "ExpressionStatement",
                        "src": "16730:36:57"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    13526
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13526,
                      "name": "voter",
                      "nodeType": "VariableDeclaration",
                      "scope": 13731,
                      "src": "16806:19:57",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Voter_$12555_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Voter"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 13525,
                        "name": "Voter",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12555,
                        "src": "16806:5:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Voter_$12555_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Voter"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13531,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13527,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13284,
                        "src": "16828:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 13528,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "voters",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12604,
                      "src": "16828:15:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$12555_storage_$",
                        "typeString": "mapping(address => struct GenesisProtocolLogic.Voter storage ref)"
                      }
                    },
                    "id": 13530,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 13529,
                      "name": "_beneficiary",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13276,
                      "src": "16844:12:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "16828:29:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Voter_$12555_storage",
                      "typeString": "struct GenesisProtocolLogic.Voter storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16806:51:57"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 13540,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13535,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13532,
                              "name": "voter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13526,
                              "src": "16872:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Voter_$12555_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Voter storage pointer"
                              }
                            },
                            "id": 13533,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "reputation",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12552,
                            "src": "16872:16:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 13534,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16892:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "16872:21:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 13536,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "16871:23:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 13537,
                            "name": "voter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13526,
                            "src": "16899:5:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Voter_$12555_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Voter storage pointer"
                            }
                          },
                          "id": 13538,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "preBoosted",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12554,
                          "src": "16899:16:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 13539,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "16898:18:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "16871:45:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 13606,
                  "nodeType": "IfStatement",
                  "src": "16867:582:57",
                  "trueBody": {
                    "id": 13605,
                    "nodeType": "Block",
                    "src": "16918:531:57",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$12514",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 13545,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13541,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13284,
                              "src": "16936:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 13542,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12568,
                            "src": "16936:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13543,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12514,
                              "src": "16954:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 13544,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "ExpiredInQueue",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "16954:28:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "16936:46:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 13566,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13562,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13284,
                                "src": "17153:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 13563,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "winningVote",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12570,
                              "src": "17153:20:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13564,
                                "name": "voter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13526,
                                "src": "17177:5:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Voter_$12555_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Voter storage pointer"
                                }
                              },
                              "id": 13565,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "vote",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12550,
                              "src": "17177:10:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "17153:34:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": null,
                          "id": 13597,
                          "nodeType": "IfStatement",
                          "src": "17149:256:57",
                          "trueBody": {
                            "id": 13596,
                            "nodeType": "Block",
                            "src": "17189:216:57",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13594,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 13567,
                                      "name": "rewards",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13281,
                                      "src": "17207:7:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                        "typeString": "uint256[3] memory"
                                      }
                                    },
                                    "id": 13569,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 13568,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "17215:1:57",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": true,
                                    "nodeType": "IndexAccess",
                                    "src": "17207:10:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 13592,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "components": [
                                            {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 13584,
                                                  "name": "lostReputation",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 13314,
                                                  "src": "17326:14:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 13581,
                                                    "name": "voter",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 13526,
                                                    "src": "17305:5:57",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_Voter_$12555_storage_ptr",
                                                      "typeString": "struct GenesisProtocolLogic.Voter storage pointer"
                                                    }
                                                  },
                                                  "id": 13582,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "reputation",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 12552,
                                                  "src": "17305:16:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 13583,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "mul",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 15826,
                                                "src": "17305:20:57",
                                                "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": 13585,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "17305:36:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 13586,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "17304:38:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "/",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 13587,
                                              "name": "proposal",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 13284,
                                              "src": "17343:8:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                              }
                                            },
                                            "id": 13588,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "preBoostedVotes",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 12600,
                                            "src": "17343:24:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                              "typeString": "mapping(uint256 => uint256)"
                                            }
                                          },
                                          "id": 13591,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 13589,
                                              "name": "proposal",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 13284,
                                              "src": "17368:8:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                              }
                                            },
                                            "id": 13590,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "winningVote",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 12570,
                                            "src": "17368:20:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "17343:46:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "17304:85:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 13578,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "components": [
                                                {
                                                  "argumentTypes": null,
                                                  "arguments": [
                                                    {
                                                      "argumentTypes": null,
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "id": 13573,
                                                        "name": "params",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 13307,
                                                        "src": "17243:6:57",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_Parameters_$12548_memory_ptr",
                                                          "typeString": "struct GenesisProtocolLogic.Parameters memory"
                                                        }
                                                      },
                                                      "id": 13574,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "votersReputationLossRatio",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 12539,
                                                      "src": "17243:32:57",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "id": 13570,
                                                        "name": "voter",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 13526,
                                                        "src": "17222:5:57",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_Voter_$12555_storage_ptr",
                                                          "typeString": "struct GenesisProtocolLogic.Voter storage pointer"
                                                        }
                                                      },
                                                      "id": 13571,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "reputation",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 12552,
                                                      "src": "17222:16:57",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "id": 13572,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "mul",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 15826,
                                                    "src": "17222:20:57",
                                                    "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": 13575,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "functionCall",
                                                  "lValueRequested": false,
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "17222:54:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "id": 13576,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "TupleExpression",
                                              "src": "17221:56:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "/",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "313030",
                                              "id": 13577,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "17278:3:57",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_100_by_1",
                                                "typeString": "int_const 100"
                                              },
                                              "value": "100"
                                            },
                                            "src": "17221:60:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 13579,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "17220:62:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 13580,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "add",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 15898,
                                      "src": "17220:83:57",
                                      "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": 13593,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "17220:170:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "17207:183:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 13595,
                                "nodeType": "ExpressionStatement",
                                "src": "17207:183:57"
                              }
                            ]
                          }
                        },
                        "id": 13598,
                        "nodeType": "IfStatement",
                        "src": "16932:473:57",
                        "trueBody": {
                          "id": 13561,
                          "nodeType": "Block",
                          "src": "16984:159:57",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 13559,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 13546,
                                    "name": "rewards",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13281,
                                    "src": "17053:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                      "typeString": "uint256[3] memory"
                                    }
                                  },
                                  "id": 13548,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 13547,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "17061:1:57",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "17053:10:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 13557,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 13552,
                                                  "name": "params",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 13307,
                                                  "src": "17089:6:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Parameters_$12548_memory_ptr",
                                                    "typeString": "struct GenesisProtocolLogic.Parameters memory"
                                                  }
                                                },
                                                "id": 13553,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "votersReputationLossRatio",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 12539,
                                                "src": "17089:32:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 13549,
                                                  "name": "voter",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 13526,
                                                  "src": "17068:5:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Voter_$12555_storage_ptr",
                                                    "typeString": "struct GenesisProtocolLogic.Voter storage pointer"
                                                  }
                                                },
                                                "id": 13550,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "reputation",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 12552,
                                                "src": "17068:16:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 13551,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "mul",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 15826,
                                              "src": "17068:20:57",
                                              "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": 13554,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "17068:54:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 13555,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "17067:56:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "313030",
                                        "id": 13556,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "17124:3:57",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_100_by_1",
                                          "typeString": "int_const 100"
                                        },
                                        "value": "100"
                                      },
                                      "src": "17067:60:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 13558,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "17066:62:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "17053:75:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 13560,
                              "nodeType": "ExpressionStatement",
                              "src": "17053:75:57"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13603,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13599,
                              "name": "voter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13526,
                              "src": "17418:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Voter_$12555_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Voter storage pointer"
                              }
                            },
                            "id": 13601,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "reputation",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12552,
                            "src": "17418:16:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 13602,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17437:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "17418:20:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13604,
                        "nodeType": "ExpressionStatement",
                        "src": "17418:20:57"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 13625,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 13617,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 13610,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13607,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13284,
                                "src": "17485:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 13608,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "proposer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12572,
                              "src": "17485:17:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 13609,
                              "name": "_beneficiary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13276,
                              "src": "17506:12:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "17485:33:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "id": 13611,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "17484:35:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 13615,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13612,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13284,
                                "src": "17522:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 13613,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "winningVote",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12570,
                              "src": "17522:20:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 13614,
                              "name": "YES",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12710,
                              "src": "17546:3:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "17522:27:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "id": 13616,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "17521:29:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "17484:66:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 13623,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13618,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13284,
                              "src": "17553:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 13619,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "proposer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12572,
                            "src": "17553:17:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 13621,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17582:1:57",
                                "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": 13620,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "17574:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 13622,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17574:10:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "17553:31:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 13624,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "17552:33:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "17484:101:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 13642,
                  "nodeType": "IfStatement",
                  "src": "17480:214:57",
                  "trueBody": {
                    "id": 13641,
                    "nodeType": "Block",
                    "src": "17587:107:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13631,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 13626,
                              "name": "rewards",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13281,
                              "src": "17601:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                "typeString": "uint256[3] memory"
                              }
                            },
                            "id": 13628,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 13627,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17609:1:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "17601:10:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13629,
                              "name": "params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13307,
                              "src": "17614:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Parameters_$12548_memory_ptr",
                                "typeString": "struct GenesisProtocolLogic.Parameters memory"
                              }
                            },
                            "id": 13630,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "proposingRepReward",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12537,
                            "src": "17614:25:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17601:38:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13632,
                        "nodeType": "ExpressionStatement",
                        "src": "17601:38:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13639,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13633,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13284,
                              "src": "17653:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 13635,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "proposer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12572,
                            "src": "17653:17:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 13637,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17681:1:57",
                                "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": 13636,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "17673:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 13638,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17673:10:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "17653:30:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 13640,
                        "nodeType": "ExpressionStatement",
                        "src": "17653:30:57"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 13647,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 13643,
                        "name": "rewards",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13281,
                        "src": "17707:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                          "typeString": "uint256[3] memory"
                        }
                      },
                      "id": 13645,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 13644,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "17715:1:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "17707:10:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 13646,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "17721:1:57",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "17707:15:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 13684,
                  "nodeType": "IfStatement",
                  "src": "17703:313:57",
                  "trueBody": {
                    "id": 13683,
                    "nodeType": "Block",
                    "src": "17724:292:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13658,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13648,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13284,
                              "src": "17738:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 13650,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "totalStakes",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12582,
                            "src": "17738:20:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 13654,
                                  "name": "rewards",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13281,
                                  "src": "17786:7:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                    "typeString": "uint256[3] memory"
                                  }
                                },
                                "id": 13656,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 13655,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "17794:1:57",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "17786:10:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13651,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13284,
                                  "src": "17761:8:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 13652,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "totalStakes",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12582,
                                "src": "17761:20:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 13653,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15874,
                              "src": "17761:24:57",
                              "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": 13657,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17761:36:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17738:59:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13659,
                        "nodeType": "ExpressionStatement",
                        "src": "17738:59:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 13663,
                                  "name": "_beneficiary",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13276,
                                  "src": "17841:12:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 13664,
                                    "name": "rewards",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13281,
                                    "src": "17855:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                      "typeString": "uint256[3] memory"
                                    }
                                  },
                                  "id": 13666,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 13665,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "17863:1:57",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "17855:10:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13661,
                                  "name": "stakingToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12714,
                                  "src": "17819:12:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$16748",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 13662,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "transfer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 16690,
                                "src": "17819:21:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,uint256) external returns (bool)"
                                }
                              },
                              "id": 13667,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17819:47:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "7472616e7366657220746f2062656e6566696369617279206661696c6564",
                              "id": 13668,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17868:32:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_01f9c28ec45391324b198ba689dab8ac93829b0379c464b3a8745b9a5d1be004",
                                "typeString": "literal_string \"transfer to beneficiary failed\""
                              },
                              "value": "transfer to beneficiary failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_01f9c28ec45391324b198ba689dab8ac93829b0379c464b3a8745b9a5d1be004",
                                "typeString": "literal_string \"transfer to beneficiary failed\""
                              }
                            ],
                            "id": 13660,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              16785,
                              16786
                            ],
                            "referencedDeclaration": 16786,
                            "src": "17811:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13669,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17811:90:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13670,
                        "nodeType": "ExpressionStatement",
                        "src": "17811:90:57"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 13672,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13274,
                              "src": "17927:11:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 13673,
                                "name": "organizations",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12697,
                                "src": "17940:13:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                  "typeString": "mapping(bytes32 => address)"
                                }
                              },
                              "id": 13676,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13674,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13284,
                                  "src": "17954:8:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 13675,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "organizationId",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12564,
                                "src": "17954:23:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "17940:38:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13677,
                              "name": "_beneficiary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13276,
                              "src": "17980:12:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 13678,
                                "name": "rewards",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13281,
                                "src": "17994:7:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                  "typeString": "uint256[3] memory"
                                }
                              },
                              "id": 13680,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 13679,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "18002:1:57",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "17994:10:57",
                              "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"
                              }
                            ],
                            "id": 13671,
                            "name": "Redeem",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12635,
                            "src": "17920:6:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,address,address,uint256)"
                            }
                          },
                          "id": 13681,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17920:85:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13682,
                        "nodeType": "EmitStatement",
                        "src": "17915:90:57"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 13694,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13689,
                            "name": "rewards",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13281,
                            "src": "18044:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                              "typeString": "uint256[3] memory"
                            }
                          },
                          "id": 13691,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 13690,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "18052:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "18044:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13685,
                            "name": "rewards",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13281,
                            "src": "18029:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                              "typeString": "uint256[3] memory"
                            }
                          },
                          "id": 13687,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 13686,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "18037:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "18029:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13688,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 15898,
                        "src": "18029:14:57",
                        "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": 13692,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "18029:26:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 13693,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "18059:1:57",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "18029:31:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 13730,
                  "nodeType": "IfStatement",
                  "src": "18025:388:57",
                  "trueBody": {
                    "id": 13729,
                    "nodeType": "Block",
                    "src": "18062:351:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 13704,
                                    "name": "rewards",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13281,
                                    "src": "18171:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                      "typeString": "uint256[3] memory"
                                    }
                                  },
                                  "id": 13706,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 13705,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18179:1:57",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "18171:10:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 13700,
                                    "name": "rewards",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13281,
                                    "src": "18156:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                      "typeString": "uint256[3] memory"
                                    }
                                  },
                                  "id": 13702,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 13701,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18164:1:57",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "18156:10:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 13703,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 15898,
                                "src": "18156:14:57",
                                "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": 13707,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18156:26:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13708,
                              "name": "_beneficiary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13276,
                              "src": "18184:12:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13709,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13274,
                              "src": "18198:11:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 13696,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13284,
                                    "src": "18108:8:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                    }
                                  },
                                  "id": 13697,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "callbacks",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12566,
                                  "src": "18108:18:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 13695,
                                "name": "VotingMachineCallbacksInterface",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15258,
                                "src": "18076:31:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_VotingMachineCallbacksInterface_$15258_$",
                                  "typeString": "type(contract VotingMachineCallbacksInterface)"
                                }
                              },
                              "id": 13698,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18076:51:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_VotingMachineCallbacksInterface_$15258",
                                "typeString": "contract VotingMachineCallbacksInterface"
                              }
                            },
                            "id": 13699,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mintReputation",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15208,
                            "src": "18076:79:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_bool_$",
                              "typeString": "function (uint256,address,bytes32) external returns (bool)"
                            }
                          },
                          "id": 13710,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18076:134:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13711,
                        "nodeType": "ExpressionStatement",
                        "src": "18076:134:57"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 13713,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13274,
                              "src": "18259:11:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 13714,
                                "name": "organizations",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12697,
                                "src": "18284:13:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                  "typeString": "mapping(bytes32 => address)"
                                }
                              },
                              "id": 13717,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13715,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13284,
                                  "src": "18298:8:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 13716,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "organizationId",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12564,
                                "src": "18298:23:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "18284:38:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13718,
                              "name": "_beneficiary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13276,
                              "src": "18336:12:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 13723,
                                    "name": "rewards",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13281,
                                    "src": "18377:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                      "typeString": "uint256[3] memory"
                                    }
                                  },
                                  "id": 13725,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 13724,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18385:1:57",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "18377:10:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 13719,
                                    "name": "rewards",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13281,
                                    "src": "18362:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                      "typeString": "uint256[3] memory"
                                    }
                                  },
                                  "id": 13721,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 13720,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18370:1:57",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "18362:10:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 13722,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 15898,
                                "src": "18362:14:57",
                                "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": 13726,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18362:26:57",
                              "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"
                              }
                            ],
                            "id": 13712,
                            "name": "RedeemReputation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12655,
                            "src": "18229:16:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,address,address,uint256)"
                            }
                          },
                          "id": 13727,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18229:173:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13728,
                        "nodeType": "EmitStatement",
                        "src": "18224:178:57"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev redeem a reward for a successful stake, vote or proposing.\nThe function use a beneficiary address as a parameter (and not msg.sender) to enable\nusers to redeem on behalf of someone else.\n@param _proposalId the ID of the proposal\n@param _beneficiary - the beneficiary address\n@return rewards -\n          [0] stakerTokenReward\n          [1] voterReputationReward\n          [2] proposerReputationReward",
            "id": 13732,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "redeem",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13277,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13274,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 13732,
                  "src": "14403:19:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13273,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "14403:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13276,
                  "name": "_beneficiary",
                  "nodeType": "VariableDeclaration",
                  "scope": 13732,
                  "src": "14424:20:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13275,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14424:7:57",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14402:43:57"
            },
            "returnParameters": {
              "id": 13282,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13281,
                  "name": "rewards",
                  "nodeType": "VariableDeclaration",
                  "scope": 13732,
                  "src": "14462:22:57",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                    "typeString": "uint256[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 13278,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "14462:4:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 13280,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 13279,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "14467:1:57",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "14462:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr",
                      "typeString": "uint256[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14461:24:57"
            },
            "scope": 15047,
            "src": "14387:4032:57",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 13869,
              "nodeType": "Block",
              "src": "19056:1256:57",
              "statements": [
                {
                  "assignments": [
                    13744
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13744,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 13869,
                      "src": "19066:25:57",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 13743,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12613,
                        "src": "19066:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13748,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 13745,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12689,
                      "src": "19094:9:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$12613_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                      }
                    },
                    "id": 13747,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 13746,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13734,
                      "src": "19104:11:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "19094:22:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$12613_storage",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19066:50:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_ProposalState_$12514",
                          "typeString": "enum GenesisProtocolLogic.ProposalState"
                        },
                        "id": 13754,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 13750,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13744,
                            "src": "19134:8:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                            }
                          },
                          "id": 13751,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "state",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12568,
                          "src": "19134:14:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ProposalState_$12514",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 13752,
                            "name": "ProposalState",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12514,
                            "src": "19152:13:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                              "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                            }
                          },
                          "id": 13753,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "Executed",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "19152:22:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ProposalState_$12514",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          }
                        },
                        "src": "19134:40:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 13749,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16785,
                      "src": "19126:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 13755,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19126:49:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13756,
                  "nodeType": "ExpressionStatement",
                  "src": "19126:49:57"
                },
                {
                  "assignments": [
                    13758
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13758,
                      "name": "totalWinningStakes",
                      "nodeType": "VariableDeclaration",
                      "scope": 13869,
                      "src": "19185:26:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 13757,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "19185:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13764,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13759,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13744,
                        "src": "19214:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 13760,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "stakes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12608,
                      "src": "19214:15:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                        "typeString": "mapping(uint256 => uint256)"
                      }
                    },
                    "id": 13763,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13761,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13744,
                        "src": "19230:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 13762,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "winningVote",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12570,
                      "src": "19230:20:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "19214:37:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19185:66:57"
                },
                {
                  "assignments": [
                    13766
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13766,
                      "name": "staker",
                      "nodeType": "VariableDeclaration",
                      "scope": 13869,
                      "src": "19261:21:57",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Staker"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 13765,
                        "name": "Staker",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12562,
                        "src": "19261:6:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Staker"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13771,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13767,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13744,
                        "src": "19285:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 13768,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "stakers",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12612,
                      "src": "19285:16:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$12562_storage_$",
                        "typeString": "mapping(address => struct GenesisProtocolLogic.Staker storage ref)"
                      }
                    },
                    "id": 13770,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 13769,
                      "name": "_beneficiary",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13736,
                      "src": "19302:12:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "19285:30:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Staker_$12562_storage",
                      "typeString": "struct GenesisProtocolLogic.Staker storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19261:54:57"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 13794,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 13789,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 13783,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 13775,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13772,
                                  "name": "staker",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13766,
                                  "src": "19343:6:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                                  }
                                },
                                "id": 13773,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amount4Bounty",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12561,
                                "src": "19343:20:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 13774,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "19366:1:57",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "19343:24:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 13776,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "19342:26:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 13781,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13777,
                                  "name": "staker",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13766,
                                  "src": "19384:6:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                                  }
                                },
                                "id": 13778,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "vote",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12557,
                                "src": "19384:11:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13779,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13744,
                                  "src": "19399:8:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 13780,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "winningVote",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12570,
                                "src": "19399:20:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "19384:35:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 13782,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "19383:37:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "19342:78:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 13787,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13784,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13744,
                                "src": "19436:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 13785,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "winningVote",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12570,
                              "src": "19436:20:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 13786,
                              "name": "YES",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12710,
                              "src": "19460:3:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "19436:27:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "id": 13788,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "19435:29:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "19342:122:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13792,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 13790,
                            "name": "totalWinningStakes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13758,
                            "src": "19480:18:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 13791,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19502:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "19480:23:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 13793,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "19479:25:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "19342:162:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 13807,
                  "nodeType": "IfStatement",
                  "src": "19325:318:57",
                  "trueBody": {
                    "id": 13806,
                    "nodeType": "Block",
                    "src": "19506:137:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13804,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 13795,
                            "name": "potentialAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13741,
                            "src": "19548:15:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 13803,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 13800,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 13796,
                                      "name": "staker",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13766,
                                      "src": "19567:6:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                                      }
                                    },
                                    "id": 13797,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount4Bounty",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12561,
                                    "src": "19567:20:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 13798,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13744,
                                      "src": "19590:8:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                      }
                                    },
                                    "id": 13799,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "daoBounty",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12580,
                                    "src": "19590:18:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "19567:41:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 13801,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "19566:43:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 13802,
                              "name": "totalWinningStakes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13758,
                              "src": "19610:18:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "19566:62:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "19548:80:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13805,
                        "nodeType": "ExpressionStatement",
                        "src": "19548:80:57"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 13823,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13810,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 13808,
                            "name": "potentialAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13741,
                            "src": "19657:15:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 13809,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19676:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "19657:20:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 13811,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "19656:22:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13821,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 13817,
                                "name": "stakingToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12714,
                                "src": "19781:12:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$16748",
                                  "typeString": "contract IERC20"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 13818,
                                "name": "_proposalId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13734,
                                "src": "19795:11:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IERC20_$16748",
                                  "typeString": "contract IERC20"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 13813,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13744,
                                      "src": "19726:8:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                      }
                                    },
                                    "id": 13814,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "callbacks",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12566,
                                    "src": "19726:18:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 13812,
                                  "name": "VotingMachineCallbacksInterface",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15258,
                                  "src": "19694:31:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_VotingMachineCallbacksInterface_$15258_$",
                                    "typeString": "type(contract VotingMachineCallbacksInterface)"
                                  }
                                },
                                "id": 13815,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19694:51:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_VotingMachineCallbacksInterface_$15258",
                                  "typeString": "contract VotingMachineCallbacksInterface"
                                }
                              },
                              "id": 13816,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balanceOfStakingToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15257,
                              "src": "19694:86:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_contract$_IERC20_$16748_$_t_bytes32_$returns$_t_uint256_$",
                                "typeString": "function (contract IERC20,bytes32) view external returns (uint256)"
                              }
                            },
                            "id": 13819,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "19694:113:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 13820,
                            "name": "potentialAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13741,
                            "src": "19811:15:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "19694:132:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 13822,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "19693:134:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "19656:171:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 13868,
                  "nodeType": "IfStatement",
                  "src": "19652:654:57",
                  "trueBody": {
                    "id": 13867,
                    "nodeType": "Block",
                    "src": "19829:477:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13828,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13824,
                              "name": "staker",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13766,
                              "src": "19843:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                              }
                            },
                            "id": 13826,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount4Bounty",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12561,
                            "src": "19843:20:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 13827,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19866:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "19843:24:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13829,
                        "nodeType": "ExpressionStatement",
                        "src": "19843:24:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13838,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13830,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13744,
                              "src": "19881:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 13832,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "daoBountyRemain",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12578,
                            "src": "19881:24:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 13836,
                                "name": "potentialAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13741,
                                "src": "19937:15:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13833,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13744,
                                  "src": "19908:8:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 13834,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "daoBountyRemain",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12578,
                                "src": "19908:24:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 13835,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15874,
                              "src": "19908:28:57",
                              "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": 13837,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "19908:45:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "19881:72:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13839,
                        "nodeType": "ExpressionStatement",
                        "src": "19881:72:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 13846,
                                  "name": "stakingToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12714,
                                  "src": "20074:12:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$16748",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 13847,
                                  "name": "_beneficiary",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13736,
                                  "src": "20088:12:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 13848,
                                  "name": "potentialAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13741,
                                  "src": "20102:15:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 13849,
                                  "name": "_proposalId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13734,
                                  "src": "20119:11:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$16748",
                                    "typeString": "contract IERC20"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 13842,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13744,
                                        "src": "20020:8:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                        }
                                      },
                                      "id": 13843,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "callbacks",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 12566,
                                      "src": "20020:18:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 13841,
                                    "name": "VotingMachineCallbacksInterface",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15258,
                                    "src": "19988:31:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_VotingMachineCallbacksInterface_$15258_$",
                                      "typeString": "type(contract VotingMachineCallbacksInterface)"
                                    }
                                  },
                                  "id": 13844,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "19988:51:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_VotingMachineCallbacksInterface_$15258",
                                    "typeString": "contract VotingMachineCallbacksInterface"
                                  }
                                },
                                "id": 13845,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "stakingTokenTransfer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 15232,
                                "src": "19988:85:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20_$16748_$_t_address_$_t_uint256_$_t_bytes32_$returns$_t_bool_$",
                                  "typeString": "function (contract IERC20,address,uint256,bytes32) external returns (bool)"
                                }
                              },
                              "id": 13850,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19988:143:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 13840,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              16785,
                              16786
                            ],
                            "referencedDeclaration": 16785,
                            "src": "19967:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 13851,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19967:165:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13852,
                        "nodeType": "ExpressionStatement",
                        "src": "19967:165:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13855,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 13853,
                            "name": "redeemedAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13739,
                            "src": "20146:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 13854,
                            "name": "potentialAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13741,
                            "src": "20163:15:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "20146:32:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13856,
                        "nodeType": "ExpressionStatement",
                        "src": "20146:32:57"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 13858,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13734,
                              "src": "20213:11:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 13859,
                                "name": "organizations",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12697,
                                "src": "20226:13:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                  "typeString": "mapping(bytes32 => address)"
                                }
                              },
                              "id": 13862,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13860,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13744,
                                  "src": "20240:8:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 13861,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "organizationId",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12564,
                                "src": "20240:23:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "20226:38:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13863,
                              "name": "_beneficiary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13736,
                              "src": "20266:12:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13864,
                              "name": "redeemedAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13739,
                              "src": "20280:14:57",
                              "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"
                              }
                            ],
                            "id": 13857,
                            "name": "RedeemDaoBounty",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12645,
                            "src": "20197:15:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,address,address,uint256)"
                            }
                          },
                          "id": 13865,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20197:98:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13866,
                        "nodeType": "EmitStatement",
                        "src": "20192:103:57"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev redeemDaoBounty a reward for a successful stake.\nThe function use a beneficiary address as a parameter (and not msg.sender) to enable\nusers to redeem on behalf of someone else.\n@param _proposalId the ID of the proposal\n@param _beneficiary - the beneficiary address\n@return redeemedAmount - redeem token amount\n@return potentialAmount - potential redeem token amount(if there is enough tokens bounty at the organization )",
            "id": 13870,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "redeemDaoBounty",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13737,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13734,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 13870,
                  "src": "18941:19:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13733,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "18941:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13736,
                  "name": "_beneficiary",
                  "nodeType": "VariableDeclaration",
                  "scope": 13870,
                  "src": "18962:20:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13735,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18962:7:57",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18940:43:57"
            },
            "returnParameters": {
              "id": 13742,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13739,
                  "name": "redeemedAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 13870,
                  "src": "19007:22:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13738,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "19007:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13741,
                  "name": "potentialAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 13870,
                  "src": "19031:23:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13740,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "19031:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "19006:49:57"
            },
            "scope": 15047,
            "src": "18916:1396:57",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 13895,
              "nodeType": "Block",
              "src": "20566:162:57",
              "statements": [
                {
                  "assignments": [
                    13878
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13878,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 13895,
                      "src": "20576:24:57",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 13877,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12613,
                        "src": "20576:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13882,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 13879,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12689,
                      "src": "20603:9:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$12613_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                      }
                    },
                    "id": 13881,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 13880,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13872,
                      "src": "20613:11:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "20603:22:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$12613_storage",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "20576:49:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 13892,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 13884,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13872,
                              "src": "20650:11:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 13883,
                            "name": "_score",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15006,
                            "src": "20643:6:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                              "typeString": "function (bytes32) view returns (uint256)"
                            }
                          },
                          "id": 13885,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20643:19:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13887,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13878,
                                "src": "20675:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal memory"
                                }
                              },
                              "id": 13888,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "paramsHash",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12576,
                              "src": "20675:19:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13889,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13878,
                                "src": "20696:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal memory"
                                }
                              },
                              "id": 13890,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "organizationId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12564,
                              "src": "20696:23:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 13886,
                            "name": "threshold",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13935,
                            "src": "20665:9:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_uint256_$",
                              "typeString": "function (bytes32,bytes32) view returns (uint256)"
                            }
                          },
                          "id": 13891,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20665:55:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "20643:77:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 13893,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "20642:79:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 13876,
                  "id": 13894,
                  "nodeType": "Return",
                  "src": "20635:86:57"
                }
              ]
            },
            "documentation": "@dev shouldBoost check if a proposal should be shifted to boosted phase.\n@param _proposalId the ID of the proposal\n@return bool true or false.",
            "id": 13896,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "shouldBoost",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13873,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13872,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 13896,
                  "src": "20519:19:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13871,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "20519:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20518:21:57"
            },
            "returnParameters": {
              "id": 13876,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13875,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 13896,
                  "src": "20560:4:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 13874,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "20560:4:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20559:6:57"
            },
            "scope": 15047,
            "src": "20498:230:57",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 13934,
              "nodeType": "Block",
              "src": "21248:290:57",
              "statements": [
                {
                  "assignments": [
                    13906
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13906,
                      "name": "power",
                      "nodeType": "VariableDeclaration",
                      "scope": 13934,
                      "src": "21258:13:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 13905,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "21258:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13910,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 13907,
                      "name": "orgBoostedProposalsCnt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12693,
                      "src": "21274:22:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                        "typeString": "mapping(bytes32 => uint256)"
                      }
                    },
                    "id": 13909,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 13908,
                      "name": "_organizationId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13900,
                      "src": "21297:15:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "21274:39:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "21258:55:57"
                },
                {
                  "assignments": [
                    13912
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13912,
                      "name": "params",
                      "nodeType": "VariableDeclaration",
                      "scope": 13934,
                      "src": "21323:25:57",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$12548_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Parameters"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 13911,
                        "name": "Parameters",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12548,
                        "src": "21323:10:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$12548_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Parameters"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13916,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 13913,
                      "name": "parameters",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12685,
                      "src": "21351:10:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$12548_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                      }
                    },
                    "id": 13915,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 13914,
                      "name": "_paramsHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13898,
                      "src": "21362:11:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "21351:23:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Parameters_$12548_storage",
                      "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "21323:51:57"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 13920,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 13917,
                      "name": "power",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13906,
                      "src": "21389:5:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13918,
                        "name": "params",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13912,
                        "src": "21397:6:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$12548_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Parameters storage pointer"
                        }
                      },
                      "id": 13919,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "limitExponentValue",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12533,
                      "src": "21397:25:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "21389:33:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 13927,
                  "nodeType": "IfStatement",
                  "src": "21385:97:57",
                  "trueBody": {
                    "id": 13926,
                    "nodeType": "Block",
                    "src": "21424:58:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13924,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 13921,
                            "name": "power",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13906,
                            "src": "21438:5:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13922,
                              "name": "params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13912,
                              "src": "21446:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Parameters_$12548_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Parameters storage pointer"
                              }
                            },
                            "id": 13923,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "limitExponentValue",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12533,
                            "src": "21446:25:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "21438:33:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13925,
                        "nodeType": "ExpressionStatement",
                        "src": "21438:33:57"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 13931,
                        "name": "power",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13906,
                        "src": "21525:5:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 13928,
                          "name": "params",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13912,
                          "src": "21499:6:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Parameters_$12548_storage_ptr",
                            "typeString": "struct GenesisProtocolLogic.Parameters storage pointer"
                          }
                        },
                        "id": 13929,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "thresholdConst",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12531,
                        "src": "21499:21:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 13930,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "pow",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11111,
                      "src": "21499:25:57",
                      "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": 13932,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "21499:32:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 13904,
                  "id": 13933,
                  "nodeType": "Return",
                  "src": "21492:39:57"
                }
              ]
            },
            "documentation": "@dev threshold return the organization's score threshold which required by\na proposal to shift to boosted state.\nThis threshold is dynamically set and it depend on the number of boosted proposal.\n@param _organizationId the organization identifier\n@param _paramsHash the organization parameters hash\n@return uint256 organization's score threshold as real number.",
            "id": 13935,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "threshold",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13901,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13898,
                  "name": "_paramsHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 13935,
                  "src": "21173:19:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13897,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "21173:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13900,
                  "name": "_organizationId",
                  "nodeType": "VariableDeclaration",
                  "scope": 13935,
                  "src": "21194:23:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13899,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "21194:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "21172:46:57"
            },
            "returnParameters": {
              "id": 13904,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13903,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 13935,
                  "src": "21239:7:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13902,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "21239:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "21238:9:57"
            },
            "scope": 15047,
            "src": "21154:384:57",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 13991,
              "nodeType": "Block",
              "src": "21823:571:57",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 13952,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13939,
                                      "src": "22043:7:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 13954,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 13953,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22051:1:57",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22043:10:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 13955,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13939,
                                      "src": "22071:7:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 13957,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 13956,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22079:1:57",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22071:10:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 13958,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13939,
                                      "src": "22099:7:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 13960,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "32",
                                      "id": 13959,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22107:1:57",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22099:10:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 13961,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13939,
                                      "src": "22127:7:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 13963,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "33",
                                      "id": 13962,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22135:1:57",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_3_by_1",
                                        "typeString": "int_const 3"
                                      },
                                      "value": "3"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22127:10:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 13964,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13939,
                                      "src": "22155:7:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 13966,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "34",
                                      "id": 13965,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22163:1:57",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_4_by_1",
                                        "typeString": "int_const 4"
                                      },
                                      "value": "4"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22155:10:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 13967,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13939,
                                      "src": "22183:7:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 13969,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "35",
                                      "id": 13968,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22191:1:57",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_5_by_1",
                                        "typeString": "int_const 5"
                                      },
                                      "value": "5"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22183:10:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 13970,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13939,
                                      "src": "22211:7:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 13972,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "36",
                                      "id": 13971,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22219:1:57",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_6_by_1",
                                        "typeString": "int_const 6"
                                      },
                                      "value": "6"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22211:10:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 13973,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13939,
                                      "src": "22239:7:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 13975,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "37",
                                      "id": 13974,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22247:1:57",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_7_by_1",
                                        "typeString": "int_const 7"
                                      },
                                      "value": "7"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22239:10:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 13976,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13939,
                                      "src": "22267:7:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 13978,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "38",
                                      "id": 13977,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22275:1:57",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_8_by_1",
                                        "typeString": "int_const 8"
                                      },
                                      "value": "8"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22267:10:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 13979,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13939,
                                      "src": "22295:7:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 13981,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "39",
                                      "id": 13980,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22303:1:57",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_9_by_1",
                                        "typeString": "int_const 9"
                                      },
                                      "value": "9"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22295:10:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 13982,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13939,
                                      "src": "22323:7:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 13984,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "3130",
                                      "id": 13983,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22331:2:57",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_10_by_1",
                                        "typeString": "int_const 10"
                                      },
                                      "value": "10"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22323:11:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 13950,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16769,
                                    "src": "22009:3:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 13951,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "22009:16:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 13985,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "22009:326:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 13949,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16776,
                              "src": "21986:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 13986,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "21986:363:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 13987,
                            "name": "_voteOnBehalf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13941,
                            "src": "22363:13:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 13947,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16769,
                            "src": "21956:3:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13948,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "21956:16:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 13988,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "21956:430:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13946,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16776,
                      "src": "21933:9:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 13989,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "21933:454:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 13945,
                  "id": 13990,
                  "nodeType": "Return",
                  "src": "21926:461:57"
                }
              ]
            },
            "documentation": "@dev hashParameters returns a hash of the given parameters",
            "id": 13992,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getParametersHash",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13942,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13939,
                  "name": "_params",
                  "nodeType": "VariableDeclaration",
                  "scope": 13992,
                  "src": "21656:23:57",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                    "typeString": "uint256[11]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 13936,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "21656:4:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 13938,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "3131",
                      "id": 13937,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "21661:2:57",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "11"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "21656:8:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$11_storage_ptr",
                      "typeString": "uint256[11]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13941,
                  "name": "_voteOnBehalf",
                  "nodeType": "VariableDeclaration",
                  "scope": 13992,
                  "src": "21734:21:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13940,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "21734:7:57",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "21646:115:57"
            },
            "returnParameters": {
              "id": 13945,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13944,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 13992,
                  "src": "21806:7:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13943,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "21806:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "21805:9:57"
            },
            "scope": 15047,
            "src": "21620:774:57",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14495,
              "nodeType": "Block",
              "src": "22810:6329:57",
              "statements": [
                {
                  "assignments": [
                    14003
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14003,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 14495,
                      "src": "22820:25:57",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 14002,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12613,
                        "src": "22820:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14007,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 14004,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12689,
                      "src": "22848:9:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$12613_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                      }
                    },
                    "id": 14006,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 14005,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13994,
                      "src": "22858:11:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "22848:22:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$12613_storage",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "22820:50:57"
                },
                {
                  "assignments": [
                    14009
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14009,
                      "name": "params",
                      "nodeType": "VariableDeclaration",
                      "scope": 14495,
                      "src": "22880:24:57",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$12548_memory_ptr",
                        "typeString": "struct GenesisProtocolLogic.Parameters"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 14008,
                        "name": "Parameters",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12548,
                        "src": "22880:10:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$12548_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Parameters"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14014,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 14010,
                      "name": "parameters",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12685,
                      "src": "22907:10:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$12548_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                      }
                    },
                    "id": 14013,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 14011,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14003,
                        "src": "22918:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 14012,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "paramsHash",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12576,
                      "src": "22918:19:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "22907:31:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Parameters_$12548_storage",
                      "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "22880:58:57"
                },
                {
                  "assignments": [
                    14016
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14016,
                      "name": "tmpProposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 14495,
                      "src": "22948:27:57",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 14015,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12613,
                        "src": "22948:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14018,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 14017,
                    "name": "proposal",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14003,
                    "src": "22978:8:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "22948:38:57"
                },
                {
                  "assignments": [
                    14020
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14020,
                      "name": "totalReputation",
                      "nodeType": "VariableDeclaration",
                      "scope": 14495,
                      "src": "22996:23:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14019,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "22996:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14028,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14026,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13994,
                        "src": "23107:11:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14022,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14003,
                              "src": "23062:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 14023,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "callbacks",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12566,
                            "src": "23062:18:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 14021,
                          "name": "VotingMachineCallbacksInterface",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15258,
                          "src": "23030:31:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_VotingMachineCallbacksInterface_$15258_$",
                            "typeString": "type(contract VotingMachineCallbacksInterface)"
                          }
                        },
                        "id": 14024,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "23030:51:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VotingMachineCallbacksInterface_$15258",
                          "typeString": "contract VotingMachineCallbacksInterface"
                        }
                      },
                      "id": 14025,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getTotalReputationSupply",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15239,
                      "src": "23030:76:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_uint256_$",
                        "typeString": "function (bytes32) view external returns (uint256)"
                      }
                    },
                    "id": 14027,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "23030:89:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "22996:123:57"
                },
                {
                  "assignments": [
                    14030
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14030,
                      "name": "executionBar",
                      "nodeType": "VariableDeclaration",
                      "scope": 14495,
                      "src": "23179:20:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14029,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "23179:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14038,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 14037,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14033,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 14031,
                            "name": "totalReputation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14020,
                            "src": "23203:15:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "313030",
                            "id": 14032,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "23219:3:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            },
                            "value": "100"
                          },
                          "src": "23203:19:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 14034,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "23202:21:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 14035,
                        "name": "params",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14009,
                        "src": "23226:6:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$12548_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Parameters memory"
                        }
                      },
                      "id": 14036,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "queuedVoteRequiredPercentage",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12523,
                      "src": "23226:35:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "23202:59:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "23179:82:57"
                },
                {
                  "assignments": [
                    14040
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14040,
                      "name": "executionState",
                      "nodeType": "VariableDeclaration",
                      "scope": 14495,
                      "src": "23271:29:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ExecutionState_$12521",
                        "typeString": "enum GenesisProtocolLogic.ExecutionState"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 14039,
                        "name": "ExecutionState",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12521,
                        "src": "23271:14:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ExecutionState_$12521",
                          "typeString": "enum GenesisProtocolLogic.ExecutionState"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14043,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 14041,
                      "name": "ExecutionState",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12521,
                      "src": "23303:14:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_enum$_ExecutionState_$12521_$",
                        "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                      }
                    },
                    "id": 14042,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberName": "None",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "23303:19:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ExecutionState_$12521",
                      "typeString": "enum GenesisProtocolLogic.ExecutionState"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "23271:51:57"
                },
                {
                  "assignments": [
                    14045
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14045,
                      "name": "averageDownstakesOfBoosted",
                      "nodeType": "VariableDeclaration",
                      "scope": 14495,
                      "src": "23332:34:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14044,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "23332:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14046,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "23332:34:57"
                },
                {
                  "assignments": [
                    14048
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14048,
                      "name": "confidenceThreshold",
                      "nodeType": "VariableDeclaration",
                      "scope": 14495,
                      "src": "23376:27:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14047,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "23376:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14049,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "23376:27:57"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 14056,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 14050,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14003,
                          "src": "23418:8:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                          }
                        },
                        "id": 14051,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "votes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12596,
                        "src": "23418:14:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 14054,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 14052,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14003,
                          "src": "23433:8:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                          }
                        },
                        "id": 14053,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "winningVote",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12570,
                        "src": "23433:20:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "23418:36:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 14055,
                      "name": "executionBar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14030,
                      "src": "23457:12:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "23418:51:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 14320,
                    "nodeType": "Block",
                    "src": "23966:3135:57",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$12514",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 14099,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14095,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14003,
                              "src": "23984:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 14096,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12568,
                            "src": "23984:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14097,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12514,
                              "src": "24002:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 14098,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Queued",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "24002:20:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "23984:38:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 14169,
                        "nodeType": "IfStatement",
                        "src": "23980:944:57",
                        "trueBody": {
                          "id": 14168,
                          "nodeType": "Block",
                          "src": "24024:900:57",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14109,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 14105,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 14100,
                                        "name": "now",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16784,
                                        "src": "24109:3:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 14101,
                                            "name": "proposal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14003,
                                            "src": "24115:8:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                            }
                                          },
                                          "id": 14102,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "times",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 12590,
                                          "src": "24115:14:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$3_storage",
                                            "typeString": "uint256[3] storage ref"
                                          }
                                        },
                                        "id": 14104,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "30",
                                          "id": 14103,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "24130:1:57",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "24115:17:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "24109:23:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 14106,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "24108:25:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14107,
                                    "name": "params",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14009,
                                    "src": "24137:6:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Parameters_$12548_memory_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Parameters memory"
                                    }
                                  },
                                  "id": 14108,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "queuedVotePeriodLimit",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12525,
                                  "src": "24137:28:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "24108:57:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 14166,
                                "nodeType": "Block",
                                "src": "24372:538:57",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14136,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 14129,
                                        "name": "confidenceThreshold",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14048,
                                        "src": "24394:19:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 14131,
                                              "name": "proposal",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 14003,
                                              "src": "24426:8:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                              }
                                            },
                                            "id": 14132,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "paramsHash",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 12576,
                                            "src": "24426:19:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 14133,
                                              "name": "proposal",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 14003,
                                              "src": "24447:8:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                              }
                                            },
                                            "id": 14134,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "organizationId",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 12564,
                                            "src": "24447:23:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            },
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          ],
                                          "id": 14130,
                                          "name": "threshold",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13935,
                                          "src": "24416:9:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_uint256_$",
                                            "typeString": "function (bytes32,bytes32) view returns (uint256)"
                                          }
                                        },
                                        "id": 14135,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "24416:55:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "24394:77:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 14137,
                                    "nodeType": "ExpressionStatement",
                                    "src": "24394:77:57"
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 14142,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 14139,
                                            "name": "_proposalId",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 13994,
                                            "src": "24504:11:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          ],
                                          "id": 14138,
                                          "name": "_score",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15006,
                                          "src": "24497:6:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                            "typeString": "function (bytes32) view returns (uint256)"
                                          }
                                        },
                                        "id": 14140,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "24497:19:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 14141,
                                        "name": "confidenceThreshold",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14048,
                                        "src": "24519:19:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "24497:41:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 14165,
                                    "nodeType": "IfStatement",
                                    "src": "24493:399:57",
                                    "trueBody": {
                                      "id": 14164,
                                      "nodeType": "Block",
                                      "src": "24540:352:57",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 14148,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 14143,
                                                "name": "proposal",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 14003,
                                                "src": "24633:8:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                }
                                              },
                                              "id": 14145,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "memberName": "state",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 12568,
                                              "src": "24633:14:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_enum$_ProposalState_$12514",
                                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 14146,
                                                "name": "ProposalState",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12514,
                                                "src": "24650:13:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                                  "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                                }
                                              },
                                              "id": 14147,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "memberName": "PreBoosted",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "24650:24:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_enum$_ProposalState_$12514",
                                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                                              }
                                            },
                                            "src": "24633:41:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                                            }
                                          },
                                          "id": 14149,
                                          "nodeType": "ExpressionStatement",
                                          "src": "24633:41:57"
                                        },
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 14156,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "baseExpression": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 14150,
                                                  "name": "proposal",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 14003,
                                                  "src": "24770:8:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                  }
                                                },
                                                "id": 14153,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "times",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 12590,
                                                "src": "24770:14:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_uint256_$3_storage",
                                                  "typeString": "uint256[3] storage ref"
                                                }
                                              },
                                              "id": 14154,
                                              "indexExpression": {
                                                "argumentTypes": null,
                                                "hexValue": "32",
                                                "id": 14152,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "24785:1:57",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_2_by_1",
                                                  "typeString": "int_const 2"
                                                },
                                                "value": "2"
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "nodeType": "IndexAccess",
                                              "src": "24770:17:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "id": 14155,
                                              "name": "now",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 16784,
                                              "src": "24790:3:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "24770:23:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 14157,
                                          "nodeType": "ExpressionStatement",
                                          "src": "24770:23:57"
                                        },
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 14162,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 14158,
                                                "name": "proposal",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 14003,
                                                "src": "24819:8:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                }
                                              },
                                              "id": 14160,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "memberName": "confidenceThreshold",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 12584,
                                              "src": "24819:28:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "id": 14161,
                                              "name": "confidenceThreshold",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 14048,
                                              "src": "24850:19:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "24819:50:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 14163,
                                          "nodeType": "ExpressionStatement",
                                          "src": "24819:50:57"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              "id": 14167,
                              "nodeType": "IfStatement",
                              "src": "24104:806:57",
                              "trueBody": {
                                "id": 14128,
                                "nodeType": "Block",
                                "src": "24167:199:57",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14115,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 14110,
                                          "name": "proposal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14003,
                                          "src": "24189:8:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                          }
                                        },
                                        "id": 14112,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "state",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 12568,
                                        "src": "24189:14:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_ProposalState_$12514",
                                          "typeString": "enum GenesisProtocolLogic.ProposalState"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 14113,
                                          "name": "ProposalState",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12514,
                                          "src": "24206:13:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                            "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                          }
                                        },
                                        "id": 14114,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "ExpiredInQueue",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "24206:28:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_ProposalState_$12514",
                                          "typeString": "enum GenesisProtocolLogic.ProposalState"
                                        }
                                      },
                                      "src": "24189:45:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ProposalState_$12514",
                                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                                      }
                                    },
                                    "id": 14116,
                                    "nodeType": "ExpressionStatement",
                                    "src": "24189:45:57"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14121,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 14117,
                                          "name": "proposal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14003,
                                          "src": "24256:8:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                          }
                                        },
                                        "id": 14119,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "winningVote",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 12570,
                                        "src": "24256:20:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "id": 14120,
                                        "name": "NO",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12707,
                                        "src": "24279:2:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "24256:25:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 14122,
                                    "nodeType": "ExpressionStatement",
                                    "src": "24256:25:57"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14126,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 14123,
                                        "name": "executionState",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14040,
                                        "src": "24303:14:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                          "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 14124,
                                          "name": "ExecutionState",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12521,
                                          "src": "24320:14:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_enum$_ExecutionState_$12521_$",
                                            "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                                          }
                                        },
                                        "id": 14125,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "QueueTimeOut",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "24320:27:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                          "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                        }
                                      },
                                      "src": "24303:44:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                        "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                      }
                                    },
                                    "id": 14127,
                                    "nodeType": "ExpressionStatement",
                                    "src": "24303:44:57"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$12514",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 14174,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14170,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14003,
                              "src": "24942:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 14171,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12568,
                            "src": "24942:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14172,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12514,
                              "src": "24960:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 14173,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "PreBoosted",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "24960:24:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "24942:42:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 14319,
                        "nodeType": "IfStatement",
                        "src": "24938:2153:57",
                        "trueBody": {
                          "id": 14318,
                          "nodeType": "Block",
                          "src": "24986:2105:57",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 14182,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 14175,
                                  "name": "confidenceThreshold",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14048,
                                  "src": "25004:19:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 14177,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14003,
                                        "src": "25036:8:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                        }
                                      },
                                      "id": 14178,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "paramsHash",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 12576,
                                      "src": "25036:19:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 14179,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14003,
                                        "src": "25057:8:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                        }
                                      },
                                      "id": 14180,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "organizationId",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 12564,
                                      "src": "25057:23:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "id": 14176,
                                    "name": "threshold",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13935,
                                    "src": "25026:9:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_uint256_$",
                                      "typeString": "function (bytes32,bytes32) view returns (uint256)"
                                    }
                                  },
                                  "id": 14181,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "25026:55:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "25004:77:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 14183,
                              "nodeType": "ExpressionStatement",
                              "src": "25004:77:57"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14193,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 14189,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 14184,
                                        "name": "now",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16784,
                                        "src": "25164:3:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 14185,
                                            "name": "proposal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14003,
                                            "src": "25170:8:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                            }
                                          },
                                          "id": 14186,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "times",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 12590,
                                          "src": "25170:14:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$3_storage",
                                            "typeString": "uint256[3] storage ref"
                                          }
                                        },
                                        "id": 14188,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "32",
                                          "id": 14187,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "25185:1:57",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_2_by_1",
                                            "typeString": "int_const 2"
                                          },
                                          "value": "2"
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "25170:17:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "25164:23:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 14190,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "25163:25:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14191,
                                    "name": "params",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14009,
                                    "src": "25192:6:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Parameters_$12548_memory_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Parameters memory"
                                    }
                                  },
                                  "id": 14192,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "preBoostedVotePeriodLimit",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12529,
                                  "src": "25192:32:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "25163:61:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 14316,
                                "nodeType": "Block",
                                "src": "26530:547:57",
                                "statements": [
                                  {
                                    "assignments": [
                                      14278
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 14278,
                                        "name": "proposalScore",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 14316,
                                        "src": "26591:21:57",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 14277,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "26591:7:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 14282,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 14280,
                                          "name": "_proposalId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13994,
                                          "src": "26622:11:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        ],
                                        "id": 14279,
                                        "name": "_score",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15006,
                                        "src": "26615:6:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                          "typeString": "function (bytes32) view returns (uint256)"
                                        }
                                      },
                                      "id": 14281,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "26615:19:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "26591:43:57"
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 14289,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 14283,
                                        "name": "proposalScore",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14278,
                                        "src": "26660:13:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 14287,
                                            "name": "confidenceThreshold",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14048,
                                            "src": "26710:19:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 14284,
                                              "name": "proposal",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 14003,
                                              "src": "26677:8:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                              }
                                            },
                                            "id": 14285,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "confidenceThreshold",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 12584,
                                            "src": "26677:28:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 14286,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "min",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 15758,
                                          "src": "26677:32:57",
                                          "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": 14288,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "26677:53:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "26660:70:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "condition": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 14301,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 14298,
                                            "name": "proposal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14003,
                                            "src": "26828:8:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                            }
                                          },
                                          "id": 14299,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "confidenceThreshold",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 12584,
                                          "src": "26828:28:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 14300,
                                          "name": "proposalScore",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14278,
                                          "src": "26859:13:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "26828:44:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "falseBody": null,
                                      "id": 14314,
                                      "nodeType": "IfStatement",
                                      "src": "26824:235:57",
                                      "trueBody": {
                                        "id": 14313,
                                        "nodeType": "Block",
                                        "src": "26874:185:57",
                                        "statements": [
                                          {
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 14306,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 14302,
                                                  "name": "proposal",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 14003,
                                                  "src": "26900:8:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                  }
                                                },
                                                "id": 14304,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": true,
                                                "memberName": "confidenceThreshold",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 12584,
                                                "src": "26900:28:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "argumentTypes": null,
                                                "id": 14305,
                                                "name": "confidenceThreshold",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 14048,
                                                "src": "26931:19:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "26900:50:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 14307,
                                            "nodeType": "ExpressionStatement",
                                            "src": "26900:50:57"
                                          },
                                          {
                                            "eventCall": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 14309,
                                                  "name": "_proposalId",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 13994,
                                                  "src": "27003:11:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                  }
                                                },
                                                {
                                                  "argumentTypes": null,
                                                  "id": 14310,
                                                  "name": "confidenceThreshold",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 14048,
                                                  "src": "27016:19:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "id": 14308,
                                                "name": "ConfidenceLevelChange",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12681,
                                                "src": "26981:21:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
                                                  "typeString": "function (bytes32,uint256)"
                                                }
                                              },
                                              "id": 14311,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "26981:55:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_tuple$__$",
                                                "typeString": "tuple()"
                                              }
                                            },
                                            "id": 14312,
                                            "nodeType": "EmitStatement",
                                            "src": "26976:60:57"
                                          }
                                        ]
                                      }
                                    },
                                    "id": 14315,
                                    "nodeType": "IfStatement",
                                    "src": "26656:403:57",
                                    "trueBody": {
                                      "id": 14297,
                                      "nodeType": "Block",
                                      "src": "26732:86:57",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 14295,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 14290,
                                                "name": "proposal",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 14003,
                                                "src": "26758:8:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                }
                                              },
                                              "id": 14292,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "memberName": "state",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 12568,
                                              "src": "26758:14:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_enum$_ProposalState_$12514",
                                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 14293,
                                                "name": "ProposalState",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12514,
                                                "src": "26775:13:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                                  "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                                }
                                              },
                                              "id": 14294,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "memberName": "Queued",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "26775:20:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_enum$_ProposalState_$12514",
                                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                                              }
                                            },
                                            "src": "26758:37:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                                            }
                                          },
                                          "id": 14296,
                                          "nodeType": "ExpressionStatement",
                                          "src": "26758:37:57"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              "id": 14317,
                              "nodeType": "IfStatement",
                              "src": "25159:1918:57",
                              "trueBody": {
                                "id": 14276,
                                "nodeType": "Block",
                                "src": "25226:1298:57",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 14198,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 14195,
                                            "name": "_proposalId",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 13994,
                                            "src": "25259:11:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          ],
                                          "id": 14194,
                                          "name": "_score",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15006,
                                          "src": "25252:6:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                            "typeString": "function (bytes32) view returns (uint256)"
                                          }
                                        },
                                        "id": 14196,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "25252:19:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 14197,
                                        "name": "confidenceThreshold",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14048,
                                        "src": "25274:19:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "25252:41:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "id": 14274,
                                      "nodeType": "Block",
                                      "src": "26420:86:57",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 14272,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 14267,
                                                "name": "proposal",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 14003,
                                                "src": "26446:8:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                }
                                              },
                                              "id": 14269,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "memberName": "state",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 12568,
                                              "src": "26446:14:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_enum$_ProposalState_$12514",
                                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 14270,
                                                "name": "ProposalState",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12514,
                                                "src": "26463:13:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                                  "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                                }
                                              },
                                              "id": 14271,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "memberName": "Queued",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "26463:20:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_enum$_ProposalState_$12514",
                                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                                              }
                                            },
                                            "src": "26446:37:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                                            }
                                          },
                                          "id": 14273,
                                          "nodeType": "ExpressionStatement",
                                          "src": "26446:37:57"
                                        }
                                      ]
                                    },
                                    "id": 14275,
                                    "nodeType": "IfStatement",
                                    "src": "25248:1258:57",
                                    "trueBody": {
                                      "id": 14266,
                                      "nodeType": "Block",
                                      "src": "25295:1119:57",
                                      "statements": [
                                        {
                                          "condition": {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 14204,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "baseExpression": {
                                                "argumentTypes": null,
                                                "id": 14199,
                                                "name": "orgBoostedProposalsCnt",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12693,
                                                "src": "25325:22:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                  "typeString": "mapping(bytes32 => uint256)"
                                                }
                                              },
                                              "id": 14202,
                                              "indexExpression": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 14200,
                                                  "name": "proposal",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 14003,
                                                  "src": "25348:8:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                  }
                                                },
                                                "id": 14201,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "organizationId",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 12564,
                                                "src": "25348:23:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "25325:47:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "<",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "id": 14203,
                                              "name": "MAX_BOOSTED_PROPOSALS",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 12720,
                                              "src": "25375:21:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "25325:71:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "falseBody": null,
                                          "id": 14265,
                                          "nodeType": "IfStatement",
                                          "src": "25321:1071:57",
                                          "trueBody": {
                                            "id": 14264,
                                            "nodeType": "Block",
                                            "src": "25398:994:57",
                                            "statements": [
                                              {
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 14210,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftHandSide": {
                                                    "argumentTypes": null,
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "id": 14205,
                                                      "name": "proposal",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 14003,
                                                      "src": "25493:8:57",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                        "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                      }
                                                    },
                                                    "id": 14207,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": true,
                                                    "memberName": "state",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 12568,
                                                    "src": "25493:14:57",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_enum$_ProposalState_$12514",
                                                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                                                    }
                                                  },
                                                  "nodeType": "Assignment",
                                                  "operator": "=",
                                                  "rightHandSide": {
                                                    "argumentTypes": null,
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "id": 14208,
                                                      "name": "ProposalState",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 12514,
                                                      "src": "25510:13:57",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                                        "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                                      }
                                                    },
                                                    "id": 14209,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "memberName": "Boosted",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": null,
                                                    "src": "25510:21:57",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_enum$_ProposalState_$12514",
                                                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                                                    }
                                                  },
                                                  "src": "25493:38:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_enum$_ProposalState_$12514",
                                                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                                                  }
                                                },
                                                "id": 14211,
                                                "nodeType": "ExpressionStatement",
                                                "src": "25493:38:57"
                                              },
                                              {
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 14218,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftHandSide": {
                                                    "argumentTypes": null,
                                                    "baseExpression": {
                                                      "argumentTypes": null,
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "id": 14212,
                                                        "name": "proposal",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 14003,
                                                        "src": "25632:8:57",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                        }
                                                      },
                                                      "id": 14215,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "times",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 12590,
                                                      "src": "25632:14:57",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_uint256_$3_storage",
                                                        "typeString": "uint256[3] storage ref"
                                                      }
                                                    },
                                                    "id": 14216,
                                                    "indexExpression": {
                                                      "argumentTypes": null,
                                                      "hexValue": "31",
                                                      "id": 14214,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "25647:1:57",
                                                      "subdenomination": null,
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_1_by_1",
                                                        "typeString": "int_const 1"
                                                      },
                                                      "value": "1"
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": true,
                                                    "nodeType": "IndexAccess",
                                                    "src": "25632:17:57",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "Assignment",
                                                  "operator": "=",
                                                  "rightHandSide": {
                                                    "argumentTypes": null,
                                                    "id": 14217,
                                                    "name": "now",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 16784,
                                                    "src": "25652:3:57",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "src": "25632:23:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 14219,
                                                "nodeType": "ExpressionStatement",
                                                "src": "25632:23:57"
                                              },
                                              {
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 14224,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "UnaryOperation",
                                                  "operator": "++",
                                                  "prefix": false,
                                                  "src": "25685:49:57",
                                                  "subExpression": {
                                                    "argumentTypes": null,
                                                    "baseExpression": {
                                                      "argumentTypes": null,
                                                      "id": 14220,
                                                      "name": "orgBoostedProposalsCnt",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 12693,
                                                      "src": "25685:22:57",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                        "typeString": "mapping(bytes32 => uint256)"
                                                      }
                                                    },
                                                    "id": 14223,
                                                    "indexExpression": {
                                                      "argumentTypes": null,
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "id": 14221,
                                                        "name": "proposal",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 14003,
                                                        "src": "25708:8:57",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                        }
                                                      },
                                                      "id": 14222,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "organizationId",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 12564,
                                                      "src": "25708:23:57",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                      }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": true,
                                                    "nodeType": "IndexAccess",
                                                    "src": "25685:47:57",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 14225,
                                                "nodeType": "ExpressionStatement",
                                                "src": "25685:49:57"
                                              },
                                              {
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 14231,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftHandSide": {
                                                    "argumentTypes": null,
                                                    "id": 14226,
                                                    "name": "averageDownstakesOfBoosted",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 14045,
                                                    "src": "25868:26:57",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "Assignment",
                                                  "operator": "=",
                                                  "rightHandSide": {
                                                    "argumentTypes": null,
                                                    "baseExpression": {
                                                      "argumentTypes": null,
                                                      "id": 14227,
                                                      "name": "averagesDownstakesOfBoosted",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 12701,
                                                      "src": "25897:27:57",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                        "typeString": "mapping(bytes32 => uint256)"
                                                      }
                                                    },
                                                    "id": 14230,
                                                    "indexExpression": {
                                                      "argumentTypes": null,
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "id": 14228,
                                                        "name": "proposal",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 14003,
                                                        "src": "25925:8:57",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                        }
                                                      },
                                                      "id": 14229,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "organizationId",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 12564,
                                                      "src": "25925:23:57",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                      }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "25897:52:57",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "src": "25868:81:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 14232,
                                                "nodeType": "ExpressionStatement",
                                                "src": "25868:81:57"
                                              },
                                              {
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 14262,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftHandSide": {
                                                    "argumentTypes": null,
                                                    "baseExpression": {
                                                      "argumentTypes": null,
                                                      "id": 14233,
                                                      "name": "averagesDownstakesOfBoosted",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 12701,
                                                      "src": "26045:27:57",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                        "typeString": "mapping(bytes32 => uint256)"
                                                      }
                                                    },
                                                    "id": 14236,
                                                    "indexExpression": {
                                                      "argumentTypes": null,
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "id": 14234,
                                                        "name": "proposal",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 14003,
                                                        "src": "26073:8:57",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                        }
                                                      },
                                                      "id": 14235,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "organizationId",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 12564,
                                                      "src": "26073:23:57",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                      }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": true,
                                                    "nodeType": "IndexAccess",
                                                    "src": "26045:52:57",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "Assignment",
                                                  "operator": "=",
                                                  "rightHandSide": {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                      {
                                                        "argumentTypes": null,
                                                        "commonType": {
                                                          "typeIdentifier": "t_int256",
                                                          "typeString": "int256"
                                                        },
                                                        "id": 14260,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                          "argumentTypes": null,
                                                          "arguments": [
                                                            {
                                                              "argumentTypes": null,
                                                              "id": 14239,
                                                              "name": "averageDownstakesOfBoosted",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 14045,
                                                              "src": "26147:26:57",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            }
                                                          ],
                                                          "expression": {
                                                            "argumentTypes": [
                                                              {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            ],
                                                            "id": 14238,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "26140:6:57",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_type$_t_int256_$",
                                                              "typeString": "type(int256)"
                                                            },
                                                            "typeName": "int256"
                                                          },
                                                          "id": 14240,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "kind": "typeConversion",
                                                          "lValueRequested": false,
                                                          "names": [],
                                                          "nodeType": "FunctionCall",
                                                          "src": "26140:34:57",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                          }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "+",
                                                        "rightExpression": {
                                                          "argumentTypes": null,
                                                          "components": [
                                                            {
                                                              "argumentTypes": null,
                                                              "commonType": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                              },
                                                              "id": 14258,
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "leftExpression": {
                                                                "argumentTypes": null,
                                                                "components": [
                                                                  {
                                                                    "argumentTypes": null,
                                                                    "commonType": {
                                                                      "typeIdentifier": "t_int256",
                                                                      "typeString": "int256"
                                                                    },
                                                                    "id": 14250,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                      "argumentTypes": null,
                                                                      "arguments": [
                                                                        {
                                                                          "argumentTypes": null,
                                                                          "baseExpression": {
                                                                            "argumentTypes": null,
                                                                            "expression": {
                                                                              "argumentTypes": null,
                                                                              "id": 14242,
                                                                              "name": "proposal",
                                                                              "nodeType": "Identifier",
                                                                              "overloadedDeclarations": [],
                                                                              "referencedDeclaration": 14003,
                                                                              "src": "26218:8:57",
                                                                              "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                                              }
                                                                            },
                                                                            "id": 14243,
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "stakes",
                                                                            "nodeType": "MemberAccess",
                                                                            "referencedDeclaration": 12608,
                                                                            "src": "26218:15:57",
                                                                            "typeDescriptions": {
                                                                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                                                              "typeString": "mapping(uint256 => uint256)"
                                                                            }
                                                                          },
                                                                          "id": 14245,
                                                                          "indexExpression": {
                                                                            "argumentTypes": null,
                                                                            "id": 14244,
                                                                            "name": "NO",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 12707,
                                                                            "src": "26234:2:57",
                                                                            "typeDescriptions": {
                                                                              "typeIdentifier": "t_uint256",
                                                                              "typeString": "uint256"
                                                                            }
                                                                          },
                                                                          "isConstant": false,
                                                                          "isLValue": true,
                                                                          "isPure": false,
                                                                          "lValueRequested": false,
                                                                          "nodeType": "IndexAccess",
                                                                          "src": "26218:19:57",
                                                                          "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                          }
                                                                        }
                                                                      ],
                                                                      "expression": {
                                                                        "argumentTypes": [
                                                                          {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                          }
                                                                        ],
                                                                        "id": 14241,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "26211:6:57",
                                                                        "typeDescriptions": {
                                                                          "typeIdentifier": "t_type$_t_int256_$",
                                                                          "typeString": "type(int256)"
                                                                        },
                                                                        "typeName": "int256"
                                                                      },
                                                                      "id": 14246,
                                                                      "isConstant": false,
                                                                      "isLValue": false,
                                                                      "isPure": false,
                                                                      "kind": "typeConversion",
                                                                      "lValueRequested": false,
                                                                      "names": [],
                                                                      "nodeType": "FunctionCall",
                                                                      "src": "26211:27:57",
                                                                      "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                      }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "-",
                                                                    "rightExpression": {
                                                                      "argumentTypes": null,
                                                                      "arguments": [
                                                                        {
                                                                          "argumentTypes": null,
                                                                          "id": 14248,
                                                                          "name": "averageDownstakesOfBoosted",
                                                                          "nodeType": "Identifier",
                                                                          "overloadedDeclarations": [],
                                                                          "referencedDeclaration": 14045,
                                                                          "src": "26246:26:57",
                                                                          "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                          }
                                                                        }
                                                                      ],
                                                                      "expression": {
                                                                        "argumentTypes": [
                                                                          {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                          }
                                                                        ],
                                                                        "id": 14247,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "26239:6:57",
                                                                        "typeDescriptions": {
                                                                          "typeIdentifier": "t_type$_t_int256_$",
                                                                          "typeString": "type(int256)"
                                                                        },
                                                                        "typeName": "int256"
                                                                      },
                                                                      "id": 14249,
                                                                      "isConstant": false,
                                                                      "isLValue": false,
                                                                      "isPure": false,
                                                                      "kind": "typeConversion",
                                                                      "lValueRequested": false,
                                                                      "names": [],
                                                                      "nodeType": "FunctionCall",
                                                                      "src": "26239:34:57",
                                                                      "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                      }
                                                                    },
                                                                    "src": "26211:62:57",
                                                                    "typeDescriptions": {
                                                                      "typeIdentifier": "t_int256",
                                                                      "typeString": "int256"
                                                                    }
                                                                  }
                                                                ],
                                                                "id": 14251,
                                                                "isConstant": false,
                                                                "isInlineArray": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "TupleExpression",
                                                                "src": "26210:64:57",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_int256",
                                                                  "typeString": "int256"
                                                                }
                                                              },
                                                              "nodeType": "BinaryOperation",
                                                              "operator": "/",
                                                              "rightExpression": {
                                                                "argumentTypes": null,
                                                                "arguments": [
                                                                  {
                                                                    "argumentTypes": null,
                                                                    "baseExpression": {
                                                                      "argumentTypes": null,
                                                                      "id": 14253,
                                                                      "name": "orgBoostedProposalsCnt",
                                                                      "nodeType": "Identifier",
                                                                      "overloadedDeclarations": [],
                                                                      "referencedDeclaration": 12693,
                                                                      "src": "26315:22:57",
                                                                      "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                                        "typeString": "mapping(bytes32 => uint256)"
                                                                      }
                                                                    },
                                                                    "id": 14256,
                                                                    "indexExpression": {
                                                                      "argumentTypes": null,
                                                                      "expression": {
                                                                        "argumentTypes": null,
                                                                        "id": 14254,
                                                                        "name": "proposal",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 14003,
                                                                        "src": "26338:8:57",
                                                                        "typeDescriptions": {
                                                                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                                        }
                                                                      },
                                                                      "id": 14255,
                                                                      "isConstant": false,
                                                                      "isLValue": true,
                                                                      "isPure": false,
                                                                      "lValueRequested": false,
                                                                      "memberName": "organizationId",
                                                                      "nodeType": "MemberAccess",
                                                                      "referencedDeclaration": 12564,
                                                                      "src": "26338:23:57",
                                                                      "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                      }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "26315:47:57",
                                                                    "typeDescriptions": {
                                                                      "typeIdentifier": "t_uint256",
                                                                      "typeString": "uint256"
                                                                    }
                                                                  }
                                                                ],
                                                                "expression": {
                                                                  "argumentTypes": [
                                                                    {
                                                                      "typeIdentifier": "t_uint256",
                                                                      "typeString": "uint256"
                                                                    }
                                                                  ],
                                                                  "id": 14252,
                                                                  "isConstant": false,
                                                                  "isLValue": false,
                                                                  "isPure": true,
                                                                  "lValueRequested": false,
                                                                  "nodeType": "ElementaryTypeNameExpression",
                                                                  "src": "26308:6:57",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_int256_$",
                                                                    "typeString": "type(int256)"
                                                                  },
                                                                  "typeName": "int256"
                                                                },
                                                                "id": 14257,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "26308:55:57",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_int256",
                                                                  "typeString": "int256"
                                                                }
                                                              },
                                                              "src": "26210:153:57",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                              }
                                                            }
                                                          ],
                                                          "id": 14259,
                                                          "isConstant": false,
                                                          "isInlineArray": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "nodeType": "TupleExpression",
                                                          "src": "26209:155:57",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                          }
                                                        },
                                                        "src": "26140:224:57",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_int256",
                                                          "typeString": "int256"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_int256",
                                                          "typeString": "int256"
                                                        }
                                                      ],
                                                      "id": 14237,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "nodeType": "ElementaryTypeNameExpression",
                                                      "src": "26132:7:57",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_uint256_$",
                                                        "typeString": "type(uint256)"
                                                      },
                                                      "typeName": "uint256"
                                                    },
                                                    "id": 14261,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "26132:233:57",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "src": "26045:320:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 14263,
                                                "nodeType": "ExpressionStatement",
                                                "src": "26045:320:57"
                                              }
                                            ]
                                          }
                                        }
                                      ]
                                    }
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 14321,
                  "nodeType": "IfStatement",
                  "src": "23414:3687:57",
                  "trueBody": {
                    "id": 14094,
                    "nodeType": "Block",
                    "src": "23471:489:57",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$12514",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 14061,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14057,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14003,
                              "src": "23550:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 14058,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12568,
                            "src": "23550:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14059,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12514,
                              "src": "23568:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 14060,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Queued",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "23568:20:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "23550:38:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            },
                            "id": 14072,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14068,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14003,
                                "src": "23680:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 14069,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "state",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12568,
                              "src": "23680:14:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalState_$12514",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14070,
                                "name": "ProposalState",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12514,
                                "src": "23698:13:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                  "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                }
                              },
                              "id": 14071,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "PreBoosted",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "23698:24:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalState_$12514",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              }
                            },
                            "src": "23680:42:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 14084,
                            "nodeType": "Block",
                            "src": "23815:82:57",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14082,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 14079,
                                    "name": "executionState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14040,
                                    "src": "23833:14:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                      "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14080,
                                      "name": "ExecutionState",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12521,
                                      "src": "23850:14:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_ExecutionState_$12521_$",
                                        "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                                      }
                                    },
                                    "id": 14081,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "BoostedBarCrossed",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "23850:32:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                      "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                    }
                                  },
                                  "src": "23833:49:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "id": 14083,
                                "nodeType": "ExpressionStatement",
                                "src": "23833:49:57"
                              }
                            ]
                          },
                          "id": 14085,
                          "nodeType": "IfStatement",
                          "src": "23676:221:57",
                          "trueBody": {
                            "id": 14078,
                            "nodeType": "Block",
                            "src": "23724:85:57",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14076,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 14073,
                                    "name": "executionState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14040,
                                    "src": "23742:14:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                      "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14074,
                                      "name": "ExecutionState",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12521,
                                      "src": "23759:14:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_ExecutionState_$12521_$",
                                        "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                                      }
                                    },
                                    "id": 14075,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "PreBoostedBarCrossed",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "23759:35:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                      "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                    }
                                  },
                                  "src": "23742:52:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "id": 14077,
                                "nodeType": "ExpressionStatement",
                                "src": "23742:52:57"
                              }
                            ]
                          }
                        },
                        "id": 14086,
                        "nodeType": "IfStatement",
                        "src": "23546:351:57",
                        "trueBody": {
                          "id": 14067,
                          "nodeType": "Block",
                          "src": "23590:80:57",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 14065,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 14062,
                                  "name": "executionState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14040,
                                  "src": "23608:14:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14063,
                                    "name": "ExecutionState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12521,
                                    "src": "23625:14:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ExecutionState_$12521_$",
                                      "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                                    }
                                  },
                                  "id": 14064,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "QueueBarCrossed",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "23625:30:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "src": "23608:47:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                  "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                }
                              },
                              "id": 14066,
                              "nodeType": "ExpressionStatement",
                              "src": "23608:47:57"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14092,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14087,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14003,
                              "src": "23910:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 14089,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12568,
                            "src": "23910:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14090,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12514,
                              "src": "23927:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 14091,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Executed",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "23927:22:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "23910:39:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ProposalState_$12514",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          }
                        },
                        "id": 14093,
                        "nodeType": "ExpressionStatement",
                        "src": "23910:39:57"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 14334,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$12514",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 14326,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14322,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14003,
                              "src": "27116:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 14323,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12568,
                            "src": "27116:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14324,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12514,
                              "src": "27134:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 14325,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Boosted",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "27134:21:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "27116:39:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 14327,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "27115:41:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$12514",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 14332,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14328,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14003,
                              "src": "27173:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 14329,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12568,
                            "src": "27173:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14330,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12514,
                              "src": "27191:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 14331,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "QuietEndingPeriod",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "27191:31:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "27173:49:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 14333,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "27172:51:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "27115:108:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 14360,
                  "nodeType": "IfStatement",
                  "src": "27111:405:57",
                  "trueBody": {
                    "id": 14359,
                    "nodeType": "Block",
                    "src": "27225:291:57",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14344,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14340,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 14335,
                                  "name": "now",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16784,
                                  "src": "27302:3:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14336,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14003,
                                      "src": "27308:8:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                      }
                                    },
                                    "id": 14337,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "times",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12590,
                                    "src": "27308:14:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_storage",
                                      "typeString": "uint256[3] storage ref"
                                    }
                                  },
                                  "id": 14339,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 14338,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "27323:1:57",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "27308:17:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "27302:23:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 14341,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "27301:25:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14342,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14003,
                              "src": "27330:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 14343,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "currentBoostedVotePeriodLimit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12574,
                            "src": "27330:38:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "27301:67:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 14358,
                        "nodeType": "IfStatement",
                        "src": "27297:209:57",
                        "trueBody": {
                          "id": 14357,
                          "nodeType": "Block",
                          "src": "27370:136:57",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 14350,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14345,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14003,
                                    "src": "27388:8:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                    }
                                  },
                                  "id": 14347,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "state",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12568,
                                  "src": "27388:14:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalState_$12514",
                                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14348,
                                    "name": "ProposalState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12514,
                                    "src": "27405:13:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                      "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                    }
                                  },
                                  "id": 14349,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "Executed",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "27405:22:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalState_$12514",
                                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                                  }
                                },
                                "src": "27388:39:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$12514",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                }
                              },
                              "id": 14351,
                              "nodeType": "ExpressionStatement",
                              "src": "27388:39:57"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 14355,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 14352,
                                  "name": "executionState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14040,
                                  "src": "27445:14:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14353,
                                    "name": "ExecutionState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12521,
                                    "src": "27462:14:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ExecutionState_$12521_$",
                                      "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                                    }
                                  },
                                  "id": 14354,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "BoostedTimeOut",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "27462:29:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "src": "27445:46:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                  "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                }
                              },
                              "id": 14356,
                              "nodeType": "ExpressionStatement",
                              "src": "27445:46:57"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ExecutionState_$12521",
                      "typeString": "enum GenesisProtocolLogic.ExecutionState"
                    },
                    "id": 14364,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 14361,
                      "name": "executionState",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14040,
                      "src": "27530:14:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ExecutionState_$12521",
                        "typeString": "enum GenesisProtocolLogic.ExecutionState"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 14362,
                        "name": "ExecutionState",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12521,
                        "src": "27548:14:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ExecutionState_$12521_$",
                          "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                        }
                      },
                      "id": 14363,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "None",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "27548:19:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ExecutionState_$12521",
                        "typeString": "enum GenesisProtocolLogic.ExecutionState"
                      }
                    },
                    "src": "27530:37:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 14475,
                  "nodeType": "IfStatement",
                  "src": "27526:1431:57",
                  "trueBody": {
                    "id": 14474,
                    "nodeType": "Block",
                    "src": "27569:1388:57",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 14375,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                  "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                },
                                "id": 14368,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 14365,
                                  "name": "executionState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14040,
                                  "src": "27588:14:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14366,
                                    "name": "ExecutionState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12521,
                                    "src": "27606:14:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ExecutionState_$12521_$",
                                      "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                                    }
                                  },
                                  "id": 14367,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "BoostedTimeOut",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "27606:29:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "src": "27588:47:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 14369,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "27587:49:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                  "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                },
                                "id": 14373,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 14370,
                                  "name": "executionState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14040,
                                  "src": "27657:14:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14371,
                                    "name": "ExecutionState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12521,
                                    "src": "27675:14:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ExecutionState_$12521_$",
                                      "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                                    }
                                  },
                                  "id": 14372,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "BoostedBarCrossed",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "27675:32:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "src": "27657:50:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 14374,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "27656:52:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "27587:121:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 14438,
                        "nodeType": "IfStatement",
                        "src": "27583:938:57",
                        "trueBody": {
                          "id": 14437,
                          "nodeType": "Block",
                          "src": "27710:811:57",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 14387,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 14376,
                                    "name": "orgBoostedProposalsCnt",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12693,
                                    "src": "27728:22:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                      "typeString": "mapping(bytes32 => uint256)"
                                    }
                                  },
                                  "id": 14379,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14377,
                                      "name": "tmpProposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14016,
                                      "src": "27751:11:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal memory"
                                      }
                                    },
                                    "id": 14378,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "organizationId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12564,
                                    "src": "27751:26:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "27728:50:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 14385,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "27852:1:57",
                                      "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,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 14380,
                                        "name": "orgBoostedProposalsCnt",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12693,
                                        "src": "27797:22:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                          "typeString": "mapping(bytes32 => uint256)"
                                        }
                                      },
                                      "id": 14383,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 14381,
                                          "name": "tmpProposal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14016,
                                          "src": "27820:11:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                                            "typeString": "struct GenesisProtocolLogic.Proposal memory"
                                          }
                                        },
                                        "id": 14382,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "organizationId",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 12564,
                                        "src": "27820:26:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "27797:50:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 14384,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 15874,
                                    "src": "27797:54:57",
                                    "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": 14386,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "27797:57:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "27728:126:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 14388,
                              "nodeType": "ExpressionStatement",
                              "src": "27728:126:57"
                            },
                            {
                              "assignments": [
                                14390
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 14390,
                                  "name": "boostedProposals",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 14437,
                                  "src": "27969:24:57",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 14389,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "27969:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 14395,
                              "initialValue": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 14391,
                                  "name": "orgBoostedProposalsCnt",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12693,
                                  "src": "27996:22:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                    "typeString": "mapping(bytes32 => uint256)"
                                  }
                                },
                                "id": 14394,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14392,
                                    "name": "tmpProposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14016,
                                    "src": "28019:11:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Proposal memory"
                                    }
                                  },
                                  "id": 14393,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "organizationId",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12564,
                                  "src": "28019:26:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "27996:50:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "27969:77:57"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14398,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 14396,
                                  "name": "boostedProposals",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14390,
                                  "src": "28068:16:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 14397,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "28088:1:57",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "28068:21:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 14435,
                                "nodeType": "Block",
                                "src": "28194:313:57",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14412,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 14407,
                                        "name": "averageDownstakesOfBoosted",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14045,
                                        "src": "28216:26:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 14408,
                                          "name": "averagesDownstakesOfBoosted",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12701,
                                          "src": "28245:27:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                            "typeString": "mapping(bytes32 => uint256)"
                                          }
                                        },
                                        "id": 14411,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 14409,
                                            "name": "proposal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14003,
                                            "src": "28273:8:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                            }
                                          },
                                          "id": 14410,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "organizationId",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 12564,
                                          "src": "28273:23:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "28245:52:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "28216:81:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 14413,
                                    "nodeType": "ExpressionStatement",
                                    "src": "28216:81:57"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14433,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 14414,
                                          "name": "averagesDownstakesOfBoosted",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12701,
                                          "src": "28319:27:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                            "typeString": "mapping(bytes32 => uint256)"
                                          }
                                        },
                                        "id": 14417,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 14415,
                                            "name": "proposal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14003,
                                            "src": "28347:8:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                            }
                                          },
                                          "id": 14416,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "organizationId",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 12564,
                                          "src": "28347:23:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "28319:52:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 14432,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "components": [
                                            {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "baseExpression": {
                                                    "argumentTypes": null,
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "id": 14425,
                                                      "name": "proposal",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 14003,
                                                      "src": "28450:8:57",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                        "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                      }
                                                    },
                                                    "id": 14426,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "stakes",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 12608,
                                                    "src": "28450:15:57",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                                      "typeString": "mapping(uint256 => uint256)"
                                                    }
                                                  },
                                                  "id": 14428,
                                                  "indexExpression": {
                                                    "argumentTypes": null,
                                                    "id": 14427,
                                                    "name": "NO",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12707,
                                                    "src": "28466:2:57",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "IndexAccess",
                                                  "src": "28450:19:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "arguments": [
                                                    {
                                                      "argumentTypes": null,
                                                      "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      },
                                                      "id": 14422,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "leftExpression": {
                                                        "argumentTypes": null,
                                                        "id": 14420,
                                                        "name": "boostedProposals",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 14390,
                                                        "src": "28426:16:57",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "nodeType": "BinaryOperation",
                                                      "operator": "+",
                                                      "rightExpression": {
                                                        "argumentTypes": null,
                                                        "hexValue": "31",
                                                        "id": 14421,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "28443:1:57",
                                                        "subdenomination": null,
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_rational_1_by_1",
                                                          "typeString": "int_const 1"
                                                        },
                                                        "value": "1"
                                                      },
                                                      "src": "28426:18:57",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "id": 14418,
                                                      "name": "averageDownstakesOfBoosted",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 14045,
                                                      "src": "28395:26:57",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "id": 14419,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "mul",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 15826,
                                                    "src": "28395:30:57",
                                                    "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": 14423,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "functionCall",
                                                  "lValueRequested": false,
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "28395:50:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 14424,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sub",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 15874,
                                                "src": "28395:54:57",
                                                "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": 14429,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "28395:75:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 14430,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "28394:77:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "/",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 14431,
                                          "name": "boostedProposals",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14390,
                                          "src": "28472:16:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "28394:94:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "28319:169:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 14434,
                                    "nodeType": "ExpressionStatement",
                                    "src": "28319:169:57"
                                  }
                                ]
                              },
                              "id": 14436,
                              "nodeType": "IfStatement",
                              "src": "28064:443:57",
                              "trueBody": {
                                "id": 14406,
                                "nodeType": "Block",
                                "src": "28091:97:57",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14404,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 14399,
                                          "name": "averagesDownstakesOfBoosted",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12701,
                                          "src": "28113:27:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                            "typeString": "mapping(bytes32 => uint256)"
                                          }
                                        },
                                        "id": 14402,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 14400,
                                            "name": "proposal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14003,
                                            "src": "28141:8:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                            }
                                          },
                                          "id": 14401,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "organizationId",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 12564,
                                          "src": "28141:23:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "28113:52:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 14403,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "28168:1:57",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "28113:56:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 14405,
                                    "nodeType": "ExpressionStatement",
                                    "src": "28113:56:57"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14440,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13994,
                              "src": "28568:11:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 14441,
                                "name": "organizations",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12697,
                                "src": "28593:13:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                  "typeString": "mapping(bytes32 => address)"
                                }
                              },
                              "id": 14444,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14442,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14003,
                                  "src": "28607:8:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 14443,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "organizationId",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12564,
                                "src": "28607:23:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "28593:38:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14445,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14003,
                                "src": "28645:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 14446,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "winningVote",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12570,
                              "src": "28645:20:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14447,
                              "name": "totalReputation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14020,
                              "src": "28679:15:57",
                              "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": 14439,
                            "name": "ExecuteProposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15089,
                            "src": "28539:15:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,address,uint256,uint256)"
                            }
                          },
                          "id": 14448,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28539:169:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14449,
                        "nodeType": "EmitStatement",
                        "src": "28534:174:57"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14451,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13994,
                              "src": "28745:11:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14452,
                              "name": "executionState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14040,
                              "src": "28758:14:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                "typeString": "enum GenesisProtocolLogic.ExecutionState"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                "typeString": "enum GenesisProtocolLogic.ExecutionState"
                              }
                            ],
                            "id": 14450,
                            "name": "GPExecuteProposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12667,
                            "src": "28727:17:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_enum$_ExecutionState_$12521_$returns$__$",
                              "typeString": "function (bytes32,enum GenesisProtocolLogic.ExecutionState)"
                            }
                          },
                          "id": 14453,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28727:46:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14454,
                        "nodeType": "EmitStatement",
                        "src": "28722:51:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14460,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13994,
                              "src": "28848:11:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14462,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14003,
                                    "src": "28865:8:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                    }
                                  },
                                  "id": 14463,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "winningVote",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12570,
                                  "src": "28865:20:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 14461,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "28861:3:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_int256_$",
                                  "typeString": "type(int256)"
                                },
                                "typeName": "int"
                              },
                              "id": 14464,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "28861:25:57",
                              "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": 14456,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14003,
                                    "src": "28812:8:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                    }
                                  },
                                  "id": 14457,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "callbacks",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12566,
                                  "src": "28812:18:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 14455,
                                "name": "ProposalExecuteInterface",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15194,
                                "src": "28787:24:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ProposalExecuteInterface_$15194_$",
                                  "typeString": "type(contract ProposalExecuteInterface)"
                                }
                              },
                              "id": 14458,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "28787:44:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ProposalExecuteInterface_$15194",
                                "typeString": "contract ProposalExecuteInterface"
                              }
                            },
                            "id": 14459,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "executeProposal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15193,
                            "src": "28787:60:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_int256_$returns$_t_bool_$",
                              "typeString": "function (bytes32,int256) external returns (bool)"
                            }
                          },
                          "id": 14465,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28787:100:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 14466,
                        "nodeType": "ExpressionStatement",
                        "src": "28787:100:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14472,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14467,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14003,
                              "src": "28901:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 14469,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "daoBounty",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12580,
                            "src": "28901:18:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14470,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14003,
                              "src": "28922:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 14471,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "daoBountyRemain",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12578,
                            "src": "28922:24:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "28901:45:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14473,
                        "nodeType": "ExpressionStatement",
                        "src": "28901:45:57"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ProposalState_$12514",
                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                    },
                    "id": 14480,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 14476,
                        "name": "tmpProposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14016,
                        "src": "28970:11:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 14477,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "state",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12568,
                      "src": "28970:17:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ProposalState_$12514",
                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 14478,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14003,
                        "src": "28991:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 14479,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "state",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12568,
                      "src": "28991:14:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ProposalState_$12514",
                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                      }
                    },
                    "src": "28970:35:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 14488,
                  "nodeType": "IfStatement",
                  "src": "28966:111:57",
                  "trueBody": {
                    "id": 14487,
                    "nodeType": "Block",
                    "src": "29007:70:57",
                    "statements": [
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14482,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13994,
                              "src": "29038:11:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14483,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14003,
                                "src": "29051:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 14484,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "state",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12568,
                              "src": "29051:14:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalState_$12514",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_enum$_ProposalState_$12514",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              }
                            ],
                            "id": 14481,
                            "name": "StateChange",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12661,
                            "src": "29026:11:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_enum$_ProposalState_$12514_$returns$__$",
                              "typeString": "function (bytes32,enum GenesisProtocolLogic.ProposalState)"
                            }
                          },
                          "id": 14485,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "29026:40:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14486,
                        "nodeType": "EmitStatement",
                        "src": "29021:45:57"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_ExecutionState_$12521",
                          "typeString": "enum GenesisProtocolLogic.ExecutionState"
                        },
                        "id": 14492,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 14489,
                          "name": "executionState",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14040,
                          "src": "29094:14:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ExecutionState_$12521",
                            "typeString": "enum GenesisProtocolLogic.ExecutionState"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 14490,
                            "name": "ExecutionState",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12521,
                            "src": "29112:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_ExecutionState_$12521_$",
                              "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                            }
                          },
                          "id": 14491,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "None",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "29112:19:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ExecutionState_$12521",
                            "typeString": "enum GenesisProtocolLogic.ExecutionState"
                          }
                        },
                        "src": "29094:37:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 14493,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "29093:39:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 14001,
                  "id": 14494,
                  "nodeType": "Return",
                  "src": "29086:46:57"
                }
              ]
            },
            "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": 14496,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 13997,
                    "name": "_proposalId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13994,
                    "src": "22783:11:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 13998,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 13996,
                  "name": "votable",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 12756,
                  "src": "22775:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "22775:20:57"
              }
            ],
            "name": "_execute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13995,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13994,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 14496,
                  "src": "22745:19:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13993,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "22745:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "22744:21:57"
            },
            "returnParameters": {
              "id": 14001,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14000,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 14496,
                  "src": "22804:4:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 13999,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "22804:4:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "22803:6:57"
            },
            "scope": 15047,
            "src": "22727:6412:57",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 14681,
              "nodeType": "Block",
              "src": "29520:1650:57",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 14516,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14512,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 14510,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14500,
                            "src": "29572:5:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 14511,
                            "name": "NUM_OF_CHOICES",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12704,
                            "src": "29581:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "29572:23:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14515,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 14513,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14500,
                            "src": "29599:5:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 14514,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "29607:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "29599:9:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "29572:36:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "77726f6e6720766f74652076616c7565",
                        "id": 14517,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "29610:18:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d82d70f2dacf08ad4e0d64af0a4b6b4468b32b18c064b4e753cdfba3c6e5a6a8",
                          "typeString": "literal_string \"wrong vote value\""
                        },
                        "value": "wrong vote value"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d82d70f2dacf08ad4e0d64af0a4b6b4468b32b18c064b4e753cdfba3c6e5a6a8",
                          "typeString": "literal_string \"wrong vote value\""
                        }
                      ],
                      "id": 14509,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "29564:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 14518,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "29564:65:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14519,
                  "nodeType": "ExpressionStatement",
                  "src": "29564:65:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 14523,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 14521,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14502,
                          "src": "29647:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 14522,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "29657:1:57",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "29647:11:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "7374616b696e6720616d6f756e742073686f756c64206265203e30",
                        "id": 14524,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "29660:29:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_91d4369e2212c0af5bece6ece1fcbdc47c9df9cbc0c01f068a62871681a0f61a",
                          "typeString": "literal_string \"staking amount should be >0\""
                        },
                        "value": "staking amount should be >0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_91d4369e2212c0af5bece6ece1fcbdc47c9df9cbc0c01f068a62871681a0f61a",
                          "typeString": "literal_string \"staking amount should be >0\""
                        }
                      ],
                      "id": 14520,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "29639:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 14525,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "29639:51:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14526,
                  "nodeType": "ExpressionStatement",
                  "src": "29639:51:57"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14528,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14498,
                        "src": "29714:11:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 14527,
                      "name": "_execute",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14496,
                      "src": "29705:8:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (bytes32) returns (bool)"
                      }
                    },
                    "id": 14529,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "29705:21:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 14533,
                  "nodeType": "IfStatement",
                  "src": "29701:63:57",
                  "trueBody": {
                    "id": 14532,
                    "nodeType": "Block",
                    "src": "29728:36:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 14530,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "29749:4:57",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 14508,
                        "id": 14531,
                        "nodeType": "Return",
                        "src": "29742:11:57"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    14535
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14535,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 14681,
                      "src": "29773:25:57",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 14534,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12613,
                        "src": "29773:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14539,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 14536,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12689,
                      "src": "29801:9:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$12613_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                      }
                    },
                    "id": 14538,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 14537,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14498,
                      "src": "29811:11:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "29801:22:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$12613_storage",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "29773:50:57"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 14552,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$12514",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 14544,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14540,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14535,
                              "src": "29839:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 14541,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12568,
                            "src": "29839:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14542,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12514,
                              "src": "29857:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 14543,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "PreBoosted",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "29857:24:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "29839:42:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 14545,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "29838:44:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$12514",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 14550,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14546,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14535,
                              "src": "29899:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 14547,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12568,
                            "src": "29899:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14548,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12514,
                              "src": "29917:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 14549,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Queued",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "29917:20:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "29899:38:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 14551,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "29898:40:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "29838:100:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 14556,
                  "nodeType": "IfStatement",
                  "src": "29834:143:57",
                  "trueBody": {
                    "id": 14555,
                    "nodeType": "Block",
                    "src": "29940:37:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 14553,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "29961:5:57",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 14508,
                        "id": 14554,
                        "nodeType": "Return",
                        "src": "29954:12:57"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    14558
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14558,
                      "name": "staker",
                      "nodeType": "VariableDeclaration",
                      "scope": 14681,
                      "src": "30055:21:57",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Staker"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 14557,
                        "name": "Staker",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12562,
                        "src": "30055:6:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Staker"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14563,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 14559,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14535,
                        "src": "30079:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 14560,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "stakers",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12612,
                      "src": "30079:16:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$12562_storage_$",
                        "typeString": "mapping(address => struct GenesisProtocolLogic.Staker storage ref)"
                      }
                    },
                    "id": 14562,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 14561,
                      "name": "_staker",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14504,
                      "src": "30096:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "30079:25:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Staker_$12562_storage",
                      "typeString": "struct GenesisProtocolLogic.Staker storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "30055:49:57"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 14574,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14567,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14564,
                              "name": "staker",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14558,
                              "src": "30119:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                              }
                            },
                            "id": 14565,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12559,
                            "src": "30119:13:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 14566,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "30135:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "30119:17:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 14568,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "30118:19:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14572,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14569,
                              "name": "staker",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14558,
                              "src": "30142:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                              }
                            },
                            "id": 14570,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "vote",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12557,
                            "src": "30142:11:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 14571,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14500,
                            "src": "30157:5:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "30142:20:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 14573,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "30141:22:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "30118:45:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 14578,
                  "nodeType": "IfStatement",
                  "src": "30114:88:57",
                  "trueBody": {
                    "id": 14577,
                    "nodeType": "Block",
                    "src": "30165:37:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 14575,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "30186:5:57",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 14508,
                        "id": 14576,
                        "nodeType": "Return",
                        "src": "30179:12:57"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    14580
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14580,
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 14681,
                      "src": "30212:14:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14579,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "30212:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14582,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 14581,
                    "name": "_amount",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14502,
                    "src": "30229:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "30212:24:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 14586,
                            "name": "_staker",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14504,
                            "src": "30280:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 14588,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16842,
                                "src": "30297:4:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_GenesisProtocolLogic_$15047",
                                  "typeString": "contract GenesisProtocolLogic"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_GenesisProtocolLogic_$15047",
                                  "typeString": "contract GenesisProtocolLogic"
                                }
                              ],
                              "id": 14587,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "30289:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 14589,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "30289:13:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 14590,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14580,
                            "src": "30304:6:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 14584,
                            "name": "stakingToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12714,
                            "src": "30254:12:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$16748",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 14585,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 16710,
                          "src": "30254:25:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256) external returns (bool)"
                          }
                        },
                        "id": 14591,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "30254:57:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6661696c207472616e736665722066726f6d207374616b6572",
                        "id": 14592,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "30313:27:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ad0934b2b17c5a144168f7c3b41e6e295357361c44445f6c875b7de168a8b283",
                          "typeString": "literal_string \"fail transfer from staker\""
                        },
                        "value": "fail transfer from staker"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ad0934b2b17c5a144168f7c3b41e6e295357361c44445f6c875b7de168a8b283",
                          "typeString": "literal_string \"fail transfer from staker\""
                        }
                      ],
                      "id": 14583,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "30246:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 14593,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "30246:95:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14594,
                  "nodeType": "ExpressionStatement",
                  "src": "30246:95:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14603,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 14595,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14535,
                        "src": "30351:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 14597,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalStakes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12582,
                      "src": "30351:20:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 14601,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14580,
                          "src": "30399:6:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 14598,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14535,
                            "src": "30374:8:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                            }
                          },
                          "id": 14599,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "totalStakes",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12582,
                          "src": "30374:20:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14600,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 15898,
                        "src": "30374:24:57",
                        "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": 14602,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "30374:32:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "30351:55:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 14604,
                  "nodeType": "ExpressionStatement",
                  "src": "30351:55:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14613,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 14605,
                        "name": "staker",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14558,
                        "src": "30447:6:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                        }
                      },
                      "id": 14607,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "amount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12559,
                      "src": "30447:13:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 14611,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14580,
                          "src": "30481:6:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 14608,
                            "name": "staker",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14558,
                            "src": "30463:6:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                            }
                          },
                          "id": 14609,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "amount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12559,
                          "src": "30463:13:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14610,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 15898,
                        "src": "30463:17:57",
                        "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": 14612,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "30463:25:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "30447:41:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 14614,
                  "nodeType": "ExpressionStatement",
                  "src": "30447:41:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 14619,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 14616,
                            "name": "staker",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14558,
                            "src": "30631:6:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                            }
                          },
                          "id": 14617,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "amount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12559,
                          "src": "30631:13:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3078313030303030303030303030303030303030303030303030303030303030303030",
                          "id": 14618,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "30648:35:57",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1",
                            "typeString": "int_const 3402...(31 digits omitted)...1456"
                          },
                          "value": "0x100000000000000000000000000000000"
                        },
                        "src": "30631:52:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "7374616b696e6720616d6f756e7420697320746f6f2068696768",
                        "id": 14620,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "30685:28:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c08e8b6b6438b031b9203bfd11dc79b9738fb9df8efea56d562c5a29a6e1f3ee",
                          "typeString": "literal_string \"staking amount is too high\""
                        },
                        "value": "staking amount is too high"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c08e8b6b6438b031b9203bfd11dc79b9738fb9df8efea56d562c5a29a6e1f3ee",
                          "typeString": "literal_string \"staking amount is too high\""
                        }
                      ],
                      "id": 14615,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "30623:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 14621,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "30623:91:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14622,
                  "nodeType": "ExpressionStatement",
                  "src": "30623:91:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 14627,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 14624,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14535,
                            "src": "30732:8:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                            }
                          },
                          "id": 14625,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "totalStakes",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12582,
                          "src": "30732:20:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3078313030303030303030303030303030303030303030303030303030303030303030",
                          "id": 14626,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "30756:35:57",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1",
                            "typeString": "int_const 3402...(31 digits omitted)...1456"
                          },
                          "value": "0x100000000000000000000000000000000"
                        },
                        "src": "30732:59:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "746f74616c207374616b657320697320746f6f2068696768",
                        "id": 14628,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "30793:26:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e3ddc8a760353c6cb4764665e8783f172d91728d9fd6e3fa17211593e37c1469",
                          "typeString": "literal_string \"total stakes is too high\""
                        },
                        "value": "total stakes is too high"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e3ddc8a760353c6cb4764665e8783f172d91728d9fd6e3fa17211593e37c1469",
                          "typeString": "literal_string \"total stakes is too high\""
                        }
                      ],
                      "id": 14623,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "30724:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 14629,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "30724:96:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14630,
                  "nodeType": "ExpressionStatement",
                  "src": "30724:96:57"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 14633,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 14631,
                      "name": "_vote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14500,
                      "src": "30835:5:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 14632,
                      "name": "YES",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12710,
                      "src": "30844:3:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "30835:12:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 14645,
                  "nodeType": "IfStatement",
                  "src": "30831:98:57",
                  "trueBody": {
                    "id": 14644,
                    "nodeType": "Block",
                    "src": "30849:80:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14642,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14634,
                              "name": "staker",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14558,
                              "src": "30863:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                              }
                            },
                            "id": 14636,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount4Bounty",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12561,
                            "src": "30863:20:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 14640,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14580,
                                "src": "30911:6:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14637,
                                  "name": "staker",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14558,
                                  "src": "30886:6:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                                  }
                                },
                                "id": 14638,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amount4Bounty",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12561,
                                "src": "30886:20:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 14639,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15898,
                              "src": "30886:24:57",
                              "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": 14641,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "30886:32:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "30863:55:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14643,
                        "nodeType": "ExpressionStatement",
                        "src": "30863:55:57"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14650,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 14646,
                        "name": "staker",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14558,
                        "src": "30938:6:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                        }
                      },
                      "id": 14648,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "vote",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12557,
                      "src": "30938:11:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 14649,
                      "name": "_vote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14500,
                      "src": "30952:5:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "30938:19:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 14651,
                  "nodeType": "ExpressionStatement",
                  "src": "30938:19:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14664,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 14652,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14535,
                          "src": "30968:8:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                          }
                        },
                        "id": 14655,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "stakes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12608,
                        "src": "30968:15:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 14656,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 14654,
                        "name": "_vote",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14500,
                        "src": "30984:5:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "30968:22:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14659,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14535,
                              "src": "31004:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 14660,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "stakes",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12608,
                            "src": "31004:15:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 14662,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 14661,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14500,
                            "src": "31020:5:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "31004:22:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 14657,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14580,
                          "src": "30993:6:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14658,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 15898,
                        "src": "30993:10:57",
                        "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": 14663,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "30993:34:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "30968:59:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 14665,
                  "nodeType": "ExpressionStatement",
                  "src": "30968:59:57"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14667,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14498,
                        "src": "31048:11:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 14668,
                          "name": "organizations",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12697,
                          "src": "31061:13:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                            "typeString": "mapping(bytes32 => address)"
                          }
                        },
                        "id": 14671,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 14669,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14535,
                            "src": "31075:8:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                            }
                          },
                          "id": 14670,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "organizationId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12564,
                          "src": "31075:23:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "31061:38:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14672,
                        "name": "_staker",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14504,
                        "src": "31101:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14673,
                        "name": "_vote",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14500,
                        "src": "31110:5:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14674,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14502,
                        "src": "31117:7:57",
                        "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": 14666,
                      "name": "Stake",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12625,
                      "src": "31042:5:57",
                      "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": 14675,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "31042:83:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14676,
                  "nodeType": "EmitStatement",
                  "src": "31037:88:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14678,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14498,
                        "src": "31151:11:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 14677,
                      "name": "_execute",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14496,
                      "src": "31142:8:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (bytes32) returns (bool)"
                      }
                    },
                    "id": 14679,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "31142:21:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 14508,
                  "id": 14680,
                  "nodeType": "Return",
                  "src": "31135:28:57"
                }
              ]
            },
            "documentation": "@dev staking function\n@param _proposalId id of the proposal\n@param _vote  NO(2) or YES(1).\n@param _amount the betting amount\n@return bool true - the proposal has been executed\n             false - otherwise.",
            "id": 14682,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_stake",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14505,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14498,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 14682,
                  "src": "29427:19:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14497,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "29427:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14500,
                  "name": "_vote",
                  "nodeType": "VariableDeclaration",
                  "scope": 14682,
                  "src": "29448:13:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14499,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "29448:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14502,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 14682,
                  "src": "29463:15:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14501,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "29463:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14504,
                  "name": "_staker",
                  "nodeType": "VariableDeclaration",
                  "scope": 14682,
                  "src": "29480:15:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14503,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "29480:7:57",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "29426:70:57"
            },
            "returnParameters": {
              "id": 14508,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14507,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 14682,
                  "src": "29514:4:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14506,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "29514:4:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "29513:6:57"
            },
            "scope": 15047,
            "src": "29411:1759:57",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 14976,
              "nodeType": "Block",
              "src": "32020:2776:57",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 14702,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14698,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 14696,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14688,
                            "src": "32038:5:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 14697,
                            "name": "NUM_OF_CHOICES",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12704,
                            "src": "32047:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "32038:23:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14701,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 14699,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14688,
                            "src": "32065:5:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 14700,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "32073:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "32065:9:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "32038:36:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30203c205f766f7465203c3d2032",
                        "id": 14703,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "32076:16:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6c167076fd1b36c01702a4c4b1e40be23cd6e9623d657cdb939ad9f0e6a548db",
                          "typeString": "literal_string \"0 < _vote <= 2\""
                        },
                        "value": "0 < _vote <= 2"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6c167076fd1b36c01702a4c4b1e40be23cd6e9623d657cdb939ad9f0e6a548db",
                          "typeString": "literal_string \"0 < _vote <= 2\""
                        }
                      ],
                      "id": 14695,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "32030:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 14704,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32030:63:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14705,
                  "nodeType": "ExpressionStatement",
                  "src": "32030:63:57"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14707,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14684,
                        "src": "32116:11:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 14706,
                      "name": "_execute",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14496,
                      "src": "32107:8:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (bytes32) returns (bool)"
                      }
                    },
                    "id": 14708,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32107:21:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 14712,
                  "nodeType": "IfStatement",
                  "src": "32103:63:57",
                  "trueBody": {
                    "id": 14711,
                    "nodeType": "Block",
                    "src": "32130:36:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 14709,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "32151:4:57",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 14694,
                        "id": 14710,
                        "nodeType": "Return",
                        "src": "32144:11:57"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    14714
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14714,
                      "name": "params",
                      "nodeType": "VariableDeclaration",
                      "scope": 14976,
                      "src": "32176:24:57",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$12548_memory_ptr",
                        "typeString": "struct GenesisProtocolLogic.Parameters"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 14713,
                        "name": "Parameters",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12548,
                        "src": "32176:10:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$12548_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Parameters"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14721,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 14715,
                      "name": "parameters",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12685,
                      "src": "32203:10:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$12548_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                      }
                    },
                    "id": 14720,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 14716,
                          "name": "proposals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12689,
                          "src": "32214:9:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$12613_storage_$",
                            "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                          }
                        },
                        "id": 14718,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 14717,
                          "name": "_proposalId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14684,
                          "src": "32224:11:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "32214:22:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                        }
                      },
                      "id": 14719,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "paramsHash",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12576,
                      "src": "32214:33:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "32203:45:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Parameters_$12548_storage",
                      "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "32176:72:57"
                },
                {
                  "assignments": [
                    14723
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14723,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 14976,
                      "src": "32258:25:57",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 14722,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12613,
                        "src": "32258:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14727,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 14724,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12689,
                      "src": "32286:9:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$12613_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                      }
                    },
                    "id": 14726,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 14725,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14684,
                      "src": "32296:11:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "32286:22:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$12613_storage",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "32258:50:57"
                },
                {
                  "assignments": [
                    14729
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14729,
                      "name": "reputation",
                      "nodeType": "VariableDeclaration",
                      "scope": 14976,
                      "src": "32365:18:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14728,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "32365:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14738,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14735,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14686,
                        "src": "32451:6:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14736,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14684,
                        "src": "32459:11:57",
                        "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": 14731,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14723,
                              "src": "32418:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 14732,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "callbacks",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12566,
                            "src": "32418:18:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 14730,
                          "name": "VotingMachineCallbacksInterface",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15258,
                          "src": "32386:31:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_VotingMachineCallbacksInterface_$15258_$",
                            "typeString": "type(contract VotingMachineCallbacksInterface)"
                          }
                        },
                        "id": 14733,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "32386:51:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VotingMachineCallbacksInterface_$15258",
                          "typeString": "contract VotingMachineCallbacksInterface"
                        }
                      },
                      "id": 14734,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "reputationOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15248,
                      "src": "32386:64:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$returns$_t_uint256_$",
                        "typeString": "function (address,bytes32) view external returns (uint256)"
                      }
                    },
                    "id": 14737,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32386:85:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "32365:106:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 14742,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 14740,
                          "name": "reputation",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14729,
                          "src": "32489:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 14741,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "32502:1:57",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "32489:14:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "5f766f746572206d75737420686176652072657075746174696f6e",
                        "id": 14743,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "32505:29:57",
                        "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": 14739,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "32481:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 14744,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32481:54:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14745,
                  "nodeType": "ExpressionStatement",
                  "src": "32481:54:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 14749,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 14747,
                          "name": "reputation",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14729,
                          "src": "32553:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 14748,
                          "name": "_rep",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14690,
                          "src": "32567:4:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "32553:18:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "72657075746174696f6e203e3d205f726570",
                        "id": 14750,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "32573:20:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_854a896e4ac217d1bc6f5707e5523361ed247e9f3d2bb1c843a9e088d13a9e72",
                          "typeString": "literal_string \"reputation >= _rep\""
                        },
                        "value": "reputation >= _rep"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_854a896e4ac217d1bc6f5707e5523361ed247e9f3d2bb1c843a9e088d13a9e72",
                          "typeString": "literal_string \"reputation >= _rep\""
                        }
                      ],
                      "id": 14746,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "32545:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 14751,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32545:49:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14752,
                  "nodeType": "ExpressionStatement",
                  "src": "32545:49:57"
                },
                {
                  "assignments": [
                    14754
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14754,
                      "name": "rep",
                      "nodeType": "VariableDeclaration",
                      "scope": 14976,
                      "src": "32604:11:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14753,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "32604:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14756,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 14755,
                    "name": "_rep",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14690,
                    "src": "32618:4:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "32604:18:57"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 14759,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 14757,
                      "name": "rep",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14754,
                      "src": "32636:3:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 14758,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "32643:1:57",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "32636:8:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 14765,
                  "nodeType": "IfStatement",
                  "src": "32632:55:57",
                  "trueBody": {
                    "id": 14764,
                    "nodeType": "Block",
                    "src": "32646:41:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14762,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 14760,
                            "name": "rep",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14754,
                            "src": "32660:3:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 14761,
                            "name": "reputation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14729,
                            "src": "32666:10:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "32660:16:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14763,
                        "nodeType": "ExpressionStatement",
                        "src": "32660:16:57"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 14772,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 14766,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14723,
                            "src": "32758:8:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                            }
                          },
                          "id": 14767,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "voters",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12604,
                          "src": "32758:15:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$12555_storage_$",
                            "typeString": "mapping(address => struct GenesisProtocolLogic.Voter storage ref)"
                          }
                        },
                        "id": 14769,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 14768,
                          "name": "_voter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14686,
                          "src": "32774:6:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "32758:23:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Voter_$12555_storage",
                          "typeString": "struct GenesisProtocolLogic.Voter storage ref"
                        }
                      },
                      "id": 14770,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "reputation",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12552,
                      "src": "32758:34:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 14771,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "32796:1:57",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "32758:39:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 14776,
                  "nodeType": "IfStatement",
                  "src": "32754:82:57",
                  "trueBody": {
                    "id": 14775,
                    "nodeType": "Block",
                    "src": "32799:37:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 14773,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "32820:5:57",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 14694,
                        "id": 14774,
                        "nodeType": "Return",
                        "src": "32813:12:57"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14789,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 14777,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14723,
                          "src": "32875:8:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                          }
                        },
                        "id": 14780,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "votes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12596,
                        "src": "32875:14:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 14781,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 14779,
                        "name": "_vote",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14688,
                        "src": "32890:5:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "32875:21:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14784,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14723,
                              "src": "32907:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 14785,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "votes",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12596,
                            "src": "32907:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 14787,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 14786,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14688,
                            "src": "32922:5:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "32907:21:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 14782,
                          "name": "rep",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14754,
                          "src": "32899:3:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14783,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 15898,
                        "src": "32899:7:57",
                        "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": 14788,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "32899:30:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "32875:54:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 14790,
                  "nodeType": "ExpressionStatement",
                  "src": "32875:54:57"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 14819,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14800,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14791,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14723,
                                "src": "33087:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 14792,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "votes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12596,
                              "src": "33087:14:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 14794,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 14793,
                              "name": "_vote",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14688,
                              "src": "33102:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "33087:21:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14795,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14723,
                                "src": "33111:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 14796,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "votes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12596,
                              "src": "33111:14:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 14799,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14797,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14723,
                                "src": "33126:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 14798,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "winningVote",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12570,
                              "src": "33126:20:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "33111:36:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "33087:60:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 14801,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "33086:62:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 14817,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14811,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14802,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14723,
                                      "src": "33166:8:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                      }
                                    },
                                    "id": 14803,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "votes",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12596,
                                    "src": "33166:14:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 14805,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 14804,
                                    "name": "NO",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12707,
                                    "src": "33181:2:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "33166:18:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14806,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14723,
                                      "src": "33188:8:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                      }
                                    },
                                    "id": 14807,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "votes",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12596,
                                    "src": "33188:14:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 14810,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14808,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14723,
                                      "src": "33203:8:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                      }
                                    },
                                    "id": 14809,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "winningVote",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12570,
                                    "src": "33203:20:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "33188:36:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "33166:58:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 14812,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "33165:60:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 14816,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14813,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14723,
                                "src": "33241:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 14814,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "winningVote",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12570,
                              "src": "33241:20:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 14815,
                              "name": "YES",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12710,
                              "src": "33265:3:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "33241:27:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "33165:103:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 14818,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "33164:105:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "33086:183:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 14885,
                  "nodeType": "IfStatement",
                  "src": "33082:937:57",
                  "trueBody": {
                    "id": 14884,
                    "nodeType": "Block",
                    "src": "33271:748:57",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 14846,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 14840,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_ProposalState_$12514",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              },
                              "id": 14824,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14820,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14723,
                                  "src": "33289:8:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 14821,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "state",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12568,
                                "src": "33289:14:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$12514",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14822,
                                  "name": "ProposalState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12514,
                                  "src": "33307:13:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                    "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                  }
                                },
                                "id": 14823,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "Boosted",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "33307:21:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$12514",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                }
                              },
                              "src": "33289:39:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14838,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 14830,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 14825,
                                          "name": "now",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 16784,
                                          "src": "33408:3:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 14826,
                                              "name": "proposal",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 14723,
                                              "src": "33414:8:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                              }
                                            },
                                            "id": 14827,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "times",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 12590,
                                            "src": "33414:14:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_uint256_$3_storage",
                                              "typeString": "uint256[3] storage ref"
                                            }
                                          },
                                          "id": 14829,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "31",
                                            "id": 14828,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "33429:1:57",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "33414:17:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "33408:23:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 14831,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "33407:25:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 14836,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 14832,
                                            "name": "params",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14714,
                                            "src": "33437:6:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Parameters_$12548_memory_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Parameters memory"
                                            }
                                          },
                                          "id": 14833,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "boostedVotePeriodLimit",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 12527,
                                          "src": "33437:29:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 14834,
                                            "name": "params",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14714,
                                            "src": "33469:6:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Parameters_$12548_memory_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Parameters memory"
                                            }
                                          },
                                          "id": 14835,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "quietEndingPeriod",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 12535,
                                          "src": "33469:24:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "33437:56:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 14837,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "33436:58:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "33407:87:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 14839,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "33406:89:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "33289:206:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            },
                            "id": 14845,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14841,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14723,
                                "src": "33514:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 14842,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "state",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12568,
                              "src": "33514:14:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalState_$12514",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14843,
                                "name": "ProposalState",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12514,
                                "src": "33532:13:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                  "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                }
                              },
                              "id": 14844,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "QuietEndingPeriod",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "33532:31:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalState_$12514",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              }
                            },
                            "src": "33514:49:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "33289:274:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 14877,
                        "nodeType": "IfStatement",
                        "src": "33285:682:57",
                        "trueBody": {
                          "id": 14876,
                          "nodeType": "Block",
                          "src": "33565:402:57",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_ProposalState_$12514",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                },
                                "id": 14851,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14847,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14723,
                                    "src": "33623:8:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                    }
                                  },
                                  "id": 14848,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "state",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12568,
                                  "src": "33623:14:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalState_$12514",
                                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14849,
                                    "name": "ProposalState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12514,
                                    "src": "33641:13:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                      "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                    }
                                  },
                                  "id": 14850,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "QuietEndingPeriod",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "33641:31:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalState_$12514",
                                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                                  }
                                },
                                "src": "33623:49:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 14867,
                              "nodeType": "IfStatement",
                              "src": "33619:231:57",
                              "trueBody": {
                                "id": 14866,
                                "nodeType": "Block",
                                "src": "33674:176:57",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14857,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 14852,
                                          "name": "proposal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14723,
                                          "src": "33696:8:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                          }
                                        },
                                        "id": 14854,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "currentBoostedVotePeriodLimit",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 12574,
                                        "src": "33696:38:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 14855,
                                          "name": "params",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14714,
                                          "src": "33737:6:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Parameters_$12548_memory_ptr",
                                            "typeString": "struct GenesisProtocolLogic.Parameters memory"
                                          }
                                        },
                                        "id": 14856,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "quietEndingPeriod",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 12535,
                                        "src": "33737:24:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "33696:65:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 14858,
                                    "nodeType": "ExpressionStatement",
                                    "src": "33696:65:57"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14864,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 14859,
                                          "name": "proposal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14723,
                                          "src": "33783:8:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                          }
                                        },
                                        "id": 14861,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "state",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 12568,
                                        "src": "33783:14:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_ProposalState_$12514",
                                          "typeString": "enum GenesisProtocolLogic.ProposalState"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 14862,
                                          "name": "ProposalState",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12514,
                                          "src": "33800:13:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                            "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                          }
                                        },
                                        "id": 14863,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "QuietEndingPeriod",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "33800:31:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_ProposalState_$12514",
                                          "typeString": "enum GenesisProtocolLogic.ProposalState"
                                        }
                                      },
                                      "src": "33783:48:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ProposalState_$12514",
                                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                                      }
                                    },
                                    "id": 14865,
                                    "nodeType": "ExpressionStatement",
                                    "src": "33783:48:57"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 14874,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14868,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14723,
                                      "src": "33929:8:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                      }
                                    },
                                    "id": 14871,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "times",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12590,
                                    "src": "33929:14:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_storage",
                                      "typeString": "uint256[3] storage ref"
                                    }
                                  },
                                  "id": 14872,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 14870,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "33944:1:57",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "33929:17:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 14873,
                                  "name": "now",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16784,
                                  "src": "33949:3:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "33929:23:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 14875,
                              "nodeType": "ExpressionStatement",
                              "src": "33929:23:57"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14882,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14878,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14723,
                              "src": "33980:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 14880,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "winningVote",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12570,
                            "src": "33980:20:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 14881,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14688,
                            "src": "34003:5:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "33980:28:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14883,
                        "nodeType": "ExpressionStatement",
                        "src": "33980:28:57"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14909,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 14886,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14723,
                          "src": "34028:8:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                          }
                        },
                        "id": 14889,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "voters",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12604,
                        "src": "34028:15:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$12555_storage_$",
                          "typeString": "mapping(address => struct GenesisProtocolLogic.Voter storage ref)"
                        }
                      },
                      "id": 14890,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 14888,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14686,
                        "src": "34044:6:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "34028:23:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Voter_$12555_storage",
                        "typeString": "struct GenesisProtocolLogic.Voter storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 14892,
                          "name": "rep",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14754,
                          "src": "34086:3:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 14893,
                          "name": "_vote",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14688,
                          "src": "34109:5:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 14906,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_enum$_ProposalState_$12514",
                                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                                    },
                                    "id": 14898,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 14894,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14723,
                                        "src": "34141:8:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                        }
                                      },
                                      "id": 14895,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "state",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 12568,
                                      "src": "34141:14:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ProposalState_$12514",
                                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 14896,
                                        "name": "ProposalState",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12514,
                                        "src": "34159:13:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                          "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                        }
                                      },
                                      "id": 14897,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "PreBoosted",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "34159:24:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ProposalState_$12514",
                                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                                      }
                                    },
                                    "src": "34141:42:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 14899,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "34140:44:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_enum$_ProposalState_$12514",
                                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                                    },
                                    "id": 14904,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 14900,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14723,
                                        "src": "34189:8:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                        }
                                      },
                                      "id": 14901,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "state",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 12568,
                                      "src": "34189:14:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ProposalState_$12514",
                                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 14902,
                                        "name": "ProposalState",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12514,
                                        "src": "34207:13:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                          "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                        }
                                      },
                                      "id": 14903,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "Queued",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "34207:20:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ProposalState_$12514",
                                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                                      }
                                    },
                                    "src": "34189:38:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 14905,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "34188:40:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "34140:88:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 14907,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "34139:90:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 14891,
                        "name": "Voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12555,
                        "src": "34054:5:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Voter_$12555_storage_ptr_$",
                          "typeString": "type(struct GenesisProtocolLogic.Voter storage pointer)"
                        }
                      },
                      "id": 14908,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [
                        "reputation",
                        "vote",
                        "preBoosted"
                      ],
                      "nodeType": "FunctionCall",
                      "src": "34054:186:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Voter_$12555_memory",
                        "typeString": "struct GenesisProtocolLogic.Voter memory"
                      }
                    },
                    "src": "34028:212:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Voter_$12555_storage",
                      "typeString": "struct GenesisProtocolLogic.Voter storage ref"
                    }
                  },
                  "id": 14910,
                  "nodeType": "ExpressionStatement",
                  "src": "34028:212:57"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 14923,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$12514",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 14915,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14911,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14723,
                              "src": "34255:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 14912,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12568,
                            "src": "34255:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14913,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12514,
                              "src": "34273:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 14914,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "PreBoosted",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "34273:24:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "34255:42:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 14916,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "34254:44:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$12514",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 14921,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14917,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14723,
                              "src": "34303:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 14918,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12568,
                            "src": "34303:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14919,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12514,
                              "src": "34321:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 14920,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Queued",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "34321:20:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "34303:38:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 14922,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "34302:40:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "34254:88:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 14960,
                  "nodeType": "IfStatement",
                  "src": "34250:402:57",
                  "trueBody": {
                    "id": 14959,
                    "nodeType": "Block",
                    "src": "34344:308:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14936,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14924,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14723,
                                "src": "34358:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 14927,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "preBoostedVotes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12600,
                              "src": "34358:24:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 14928,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 14926,
                              "name": "_vote",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14688,
                              "src": "34383:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "34358:31:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14931,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14723,
                                    "src": "34400:8:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                    }
                                  },
                                  "id": 14932,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "preBoostedVotes",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12600,
                                  "src": "34400:24:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 14934,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 14933,
                                  "name": "_vote",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14688,
                                  "src": "34425:5:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "34400:31:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 14929,
                                "name": "rep",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14754,
                                "src": "34392:3:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 14930,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15898,
                              "src": "34392:7:57",
                              "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": 14935,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "34392:40:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "34358:74:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14937,
                        "nodeType": "ExpressionStatement",
                        "src": "34358:74:57"
                      },
                      {
                        "assignments": [
                          14939
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14939,
                            "name": "reputationDeposit",
                            "nodeType": "VariableDeclaration",
                            "scope": 14959,
                            "src": "34446:25:57",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 14938,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "34446:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 14948,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14947,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 14943,
                                    "name": "rep",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14754,
                                    "src": "34512:3:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14940,
                                      "name": "params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14714,
                                      "src": "34475:6:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Parameters_$12548_memory_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Parameters memory"
                                      }
                                    },
                                    "id": 14941,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "votersReputationLossRatio",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12539,
                                    "src": "34475:32:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 14942,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 15826,
                                  "src": "34475:36:57",
                                  "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": 14944,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "34475:41:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 14945,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "34474:43:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "313030",
                            "id": 14946,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "34518:3:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            },
                            "value": "100"
                          },
                          "src": "34474:47:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "34446:75:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14954,
                              "name": "reputationDeposit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14939,
                              "src": "34602:17:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14955,
                              "name": "_voter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14686,
                              "src": "34621:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14956,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14684,
                              "src": "34629:11:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14950,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14723,
                                    "src": "34567:8:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                    }
                                  },
                                  "id": 14951,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "callbacks",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12566,
                                  "src": "34567:18:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 14949,
                                "name": "VotingMachineCallbacksInterface",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15258,
                                "src": "34535:31:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_VotingMachineCallbacksInterface_$15258_$",
                                  "typeString": "type(contract VotingMachineCallbacksInterface)"
                                }
                              },
                              "id": 14952,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "34535:51:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_VotingMachineCallbacksInterface_$15258",
                                "typeString": "contract VotingMachineCallbacksInterface"
                              }
                            },
                            "id": 14953,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "burnReputation",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15219,
                            "src": "34535:66:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_bool_$",
                              "typeString": "function (uint256,address,bytes32) external returns (bool)"
                            }
                          },
                          "id": 14957,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "34535:106:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 14958,
                        "nodeType": "ExpressionStatement",
                        "src": "34535:106:57"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14962,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14684,
                        "src": "34679:11:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 14963,
                          "name": "organizations",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12697,
                          "src": "34692:13:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                            "typeString": "mapping(bytes32 => address)"
                          }
                        },
                        "id": 14966,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 14964,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14723,
                            "src": "34706:8:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                            }
                          },
                          "id": 14965,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "organizationId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12564,
                          "src": "34706:23:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "34692:38:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14967,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14686,
                        "src": "34732:6:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14968,
                        "name": "_vote",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14688,
                        "src": "34740:5:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14969,
                        "name": "rep",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14754,
                        "src": "34747:3:57",
                        "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": 14961,
                      "name": "VoteProposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15101,
                      "src": "34666:12:57",
                      "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": 14970,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "34666:85:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14971,
                  "nodeType": "EmitStatement",
                  "src": "34661:90:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14973,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14684,
                        "src": "34777:11:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 14972,
                      "name": "_execute",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14496,
                      "src": "34768:8:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (bytes32) returns (bool)"
                      }
                    },
                    "id": 14974,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "34768:21:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 14694,
                  "id": 14975,
                  "nodeType": "Return",
                  "src": "34761:28:57"
                }
              ]
            },
            "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@param _rep how many reputation the voter would like to stake for this vote.\n        if  _rep==0 so the voter full reputation will be use.\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": 14977,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "internalVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14691,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14684,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 14977,
                  "src": "31931:19:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14683,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "31931:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14686,
                  "name": "_voter",
                  "nodeType": "VariableDeclaration",
                  "scope": 14977,
                  "src": "31952:14:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14685,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "31952:7:57",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14688,
                  "name": "_vote",
                  "nodeType": "VariableDeclaration",
                  "scope": 14977,
                  "src": "31968:13:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14687,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "31968:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14690,
                  "name": "_rep",
                  "nodeType": "VariableDeclaration",
                  "scope": 14977,
                  "src": "31983:12:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14689,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "31983:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "31930:66:57"
            },
            "returnParameters": {
              "id": 14694,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14693,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 14977,
                  "src": "32014:4:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14692,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "32014:4:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "32013:6:57"
            },
            "scope": 15047,
            "src": "31909:2887:57",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 15005,
              "nodeType": "Block",
              "src": "35099:241:57",
              "statements": [
                {
                  "assignments": [
                    14985
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14985,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 15005,
                      "src": "35109:25:57",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 14984,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12613,
                        "src": "35109:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14989,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 14986,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12689,
                      "src": "35137:9:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$12613_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                      }
                    },
                    "id": 14988,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 14987,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14979,
                      "src": "35147:11:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "35137:22:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$12613_storage",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "35109:50:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14998,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14985,
                                "src": "35312:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 14999,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "stakes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12608,
                              "src": "35312:15:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 15001,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 15000,
                              "name": "NO",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12707,
                              "src": "35328:2:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "35312:19:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 14997,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "35304:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint216_$",
                            "typeString": "type(uint216)"
                          },
                          "typeName": "uint216"
                        },
                        "id": 15002,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "35304:28:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint216",
                          "typeString": "uint216"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint216",
                          "typeString": "uint216"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14991,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14985,
                                "src": "35273:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 14992,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "stakes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12608,
                              "src": "35273:15:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 14994,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 14993,
                              "name": "YES",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12710,
                              "src": "35289:3:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "35273:20:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 14990,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "35265:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint216_$",
                            "typeString": "type(uint216)"
                          },
                          "typeName": "uint216"
                        },
                        "id": 14995,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "35265:29:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint216",
                          "typeString": "uint216"
                        }
                      },
                      "id": 14996,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "fraction",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11134,
                      "src": "35265:38:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint216_$_t_uint216_$returns$_t_uint256_$bound_to$_t_uint216_$",
                        "typeString": "function (uint216,uint216) pure returns (uint256)"
                      }
                    },
                    "id": 15003,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "35265:68:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 14983,
                  "id": 15004,
                  "nodeType": "Return",
                  "src": "35258:75:57"
                }
              ]
            },
            "documentation": "@dev _score return the proposal score (Confidence level)\nFor dual choice proposal S = (S+)/(S-)\n@param _proposalId the ID of the proposal\n@return uint256 proposal score as real number.",
            "id": 15006,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_score",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14980,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14979,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 15006,
                  "src": "35047:19:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14978,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "35047:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "35046:21:57"
            },
            "returnParameters": {
              "id": 14983,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14982,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 15006,
                  "src": "35090:7:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14981,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "35090:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "35089:9:57"
            },
            "scope": 15047,
            "src": "35031:309:57",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 15045,
              "nodeType": "Block",
              "src": "35572:297:57",
              "statements": [
                {
                  "assignments": [
                    15014
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15014,
                      "name": "pState",
                      "nodeType": "VariableDeclaration",
                      "scope": 15045,
                      "src": "35582:20:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ProposalState_$12514",
                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 15013,
                        "name": "ProposalState",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12514,
                        "src": "35582:13:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ProposalState_$12514",
                          "typeString": "enum GenesisProtocolLogic.ProposalState"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 15019,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 15015,
                        "name": "proposals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12689,
                        "src": "35605:9:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$12613_storage_$",
                          "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                        }
                      },
                      "id": 15017,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 15016,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15008,
                        "src": "35615:11:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "35605:22:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$12613_storage",
                        "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                      }
                    },
                    "id": 15018,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "state",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 12568,
                    "src": "35605:28:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ProposalState_$12514",
                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "35582:51:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 15042,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 15036,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 15030,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_enum$_ProposalState_$12514",
                                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                                  },
                                  "id": 15023,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 15020,
                                    "name": "pState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15014,
                                    "src": "35652:6:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ProposalState_$12514",
                                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 15021,
                                      "name": "ProposalState",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12514,
                                      "src": "35662:13:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                        "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                      }
                                    },
                                    "id": 15022,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "PreBoosted",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "35662:24:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ProposalState_$12514",
                                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                                    }
                                  },
                                  "src": "35652:34:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 15024,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "35651:36:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_enum$_ProposalState_$12514",
                                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                                  },
                                  "id": 15028,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 15025,
                                    "name": "pState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15014,
                                    "src": "35707:6:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ProposalState_$12514",
                                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 15026,
                                      "name": "ProposalState",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12514,
                                      "src": "35717:13:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                        "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                      }
                                    },
                                    "id": 15027,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "Boosted",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "35717:21:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ProposalState_$12514",
                                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                                    }
                                  },
                                  "src": "35707:31:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 15029,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "35706:33:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "35651:88:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_ProposalState_$12514",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                },
                                "id": 15034,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 15031,
                                  "name": "pState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15014,
                                  "src": "35759:6:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalState_$12514",
                                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 15032,
                                    "name": "ProposalState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12514,
                                    "src": "35769:13:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                      "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                    }
                                  },
                                  "id": 15033,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "QuietEndingPeriod",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "35769:31:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalState_$12514",
                                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                                  }
                                },
                                "src": "35759:41:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 15035,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "35758:43:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "35651:150:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_ProposalState_$12514",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              },
                              "id": 15040,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 15037,
                                "name": "pState",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15014,
                                "src": "35821:6:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$12514",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 15038,
                                  "name": "ProposalState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12514,
                                  "src": "35831:13:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                    "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                  }
                                },
                                "id": 15039,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "Queued",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "35831:20:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$12514",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                }
                              },
                              "src": "35821:30:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 15041,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "35820:32:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "35651:201:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 15043,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "35650:212:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 15012,
                  "id": 15044,
                  "nodeType": "Return",
                  "src": "35643:219:57"
                }
              ]
            },
            "documentation": "@dev _isVotable check if the proposal is votable\n@param _proposalId the ID of the proposal\n@return bool true or false",
            "id": 15046,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_isVotable",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15009,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15008,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 15046,
                  "src": "35523:19:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 15007,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "35523:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "35522:21:57"
            },
            "returnParameters": {
              "id": 15012,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15011,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 15046,
                  "src": "35566:4:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15010,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "35566:4:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "35565:6:57"
            },
            "scope": 15047,
            "src": "35503:366:57",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 15048,
        "src": "531:35340:57"
      }
    ],
    "src": "0:35872:57"
  },
  "legacyAST": {
    "absolutePath": "@daostack/infra/contracts/votingMachines/GenesisProtocolLogic.sol",
    "exportedSymbols": {
      "GenesisProtocolLogic": [
        15047
      ]
    },
    "id": 15048,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 12480,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".4"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:57"
      },
      {
        "absolutePath": "@daostack/infra/contracts/votingMachines/IntVoteInterface.sol",
        "file": "./IntVoteInterface.sol",
        "id": 12481,
        "nodeType": "ImportDirective",
        "scope": 15048,
        "sourceUnit": 15183,
        "src": "25:32:57",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@daostack/infra/contracts/libs/RealMath.sol",
        "file": "../libs/RealMath.sol",
        "id": 12483,
        "nodeType": "ImportDirective",
        "scope": 15048,
        "sourceUnit": 11189,
        "src": "58:48:57",
        "symbolAliases": [
          {
            "foreign": 12482,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "@daostack/infra/contracts/votingMachines/VotingMachineCallbacksInterface.sol",
        "file": "./VotingMachineCallbacksInterface.sol",
        "id": 12484,
        "nodeType": "ImportDirective",
        "scope": 15048,
        "sourceUnit": 15259,
        "src": "107:47:57",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@daostack/infra/contracts/votingMachines/ProposalExecuteInterface.sol",
        "file": "./ProposalExecuteInterface.sol",
        "id": 12485,
        "nodeType": "ImportDirective",
        "scope": 15048,
        "sourceUnit": 15195,
        "src": "155:40:57",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "id": 12486,
        "nodeType": "ImportDirective",
        "scope": 15048,
        "sourceUnit": 15920,
        "src": "196:59:57",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/math/Math.sol",
        "file": "openzeppelin-solidity/contracts/math/Math.sol",
        "id": 12487,
        "nodeType": "ImportDirective",
        "scope": 15048,
        "sourceUnit": 15792,
        "src": "256:55:57",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol",
        "file": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol",
        "id": 12488,
        "nodeType": "ImportDirective",
        "scope": 15048,
        "sourceUnit": 16749,
        "src": "312:64:57",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/utils/Address.sol",
        "file": "openzeppelin-solidity/contracts/utils/Address.sol",
        "id": 12489,
        "nodeType": "ImportDirective",
        "scope": 15048,
        "sourceUnit": 16768,
        "src": "377:59:57",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 12490,
              "name": "IntVoteInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 15182,
              "src": "564:16:57",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IntVoteInterface_$15182",
                "typeString": "contract IntVoteInterface"
              }
            },
            "id": 12491,
            "nodeType": "InheritanceSpecifier",
            "src": "564:16:57"
          }
        ],
        "contractDependencies": [
          15182
        ],
        "contractKind": "contract",
        "documentation": "@title GenesisProtocol implementation -an organization's voting machine scheme.",
        "fullyImplemented": false,
        "id": 15047,
        "linearizedBaseContracts": [
          15047,
          15182
        ],
        "name": "GenesisProtocolLogic",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 12494,
            "libraryName": {
              "contractScope": null,
              "id": 12492,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 15919,
              "src": "593:8:57",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$15919",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "587:27:57",
            "typeName": {
              "id": 12493,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "606:7:57",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "id": 12497,
            "libraryName": {
              "contractScope": null,
              "id": 12495,
              "name": "Math",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 15791,
              "src": "625:4:57",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Math_$15791",
                "typeString": "library Math"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "619:23:57",
            "typeName": {
              "id": 12496,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "634:7:57",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "id": 12500,
            "libraryName": {
              "contractScope": null,
              "id": 12498,
              "name": "RealMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 11188,
              "src": "653:8:57",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_RealMath_$11188",
                "typeString": "library RealMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "647:27:57",
            "typeName": {
              "id": 12499,
              "name": "uint216",
              "nodeType": "ElementaryTypeName",
              "src": "666:7:57",
              "typeDescriptions": {
                "typeIdentifier": "t_uint216",
                "typeString": "uint216"
              }
            }
          },
          {
            "id": 12503,
            "libraryName": {
              "contractScope": null,
              "id": 12501,
              "name": "RealMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 11188,
              "src": "685:8:57",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_RealMath_$11188",
                "typeString": "library RealMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "679:27:57",
            "typeName": {
              "id": 12502,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "698:7:57",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "id": 12506,
            "libraryName": {
              "contractScope": null,
              "id": 12504,
              "name": "Address",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 16767,
              "src": "717:7:57",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Address_$16767",
                "typeString": "library Address"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "711:26:57",
            "typeName": {
              "id": 12505,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "729:7:57",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            }
          },
          {
            "canonicalName": "GenesisProtocolLogic.ProposalState",
            "id": 12514,
            "members": [
              {
                "id": 12507,
                "name": "None",
                "nodeType": "EnumValue",
                "src": "764:4:57"
              },
              {
                "id": 12508,
                "name": "ExpiredInQueue",
                "nodeType": "EnumValue",
                "src": "770:14:57"
              },
              {
                "id": 12509,
                "name": "Executed",
                "nodeType": "EnumValue",
                "src": "786:8:57"
              },
              {
                "id": 12510,
                "name": "Queued",
                "nodeType": "EnumValue",
                "src": "796:6:57"
              },
              {
                "id": 12511,
                "name": "PreBoosted",
                "nodeType": "EnumValue",
                "src": "804:10:57"
              },
              {
                "id": 12512,
                "name": "Boosted",
                "nodeType": "EnumValue",
                "src": "816:7:57"
              },
              {
                "id": 12513,
                "name": "QuietEndingPeriod",
                "nodeType": "EnumValue",
                "src": "825:17:57"
              }
            ],
            "name": "ProposalState",
            "nodeType": "EnumDefinition",
            "src": "743:100:57"
          },
          {
            "canonicalName": "GenesisProtocolLogic.ExecutionState",
            "id": 12521,
            "members": [
              {
                "id": 12515,
                "name": "None",
                "nodeType": "EnumValue",
                "src": "870:4:57"
              },
              {
                "id": 12516,
                "name": "QueueBarCrossed",
                "nodeType": "EnumValue",
                "src": "876:15:57"
              },
              {
                "id": 12517,
                "name": "QueueTimeOut",
                "nodeType": "EnumValue",
                "src": "893:12:57"
              },
              {
                "id": 12518,
                "name": "PreBoostedBarCrossed",
                "nodeType": "EnumValue",
                "src": "907:20:57"
              },
              {
                "id": 12519,
                "name": "BoostedTimeOut",
                "nodeType": "EnumValue",
                "src": "929:14:57"
              },
              {
                "id": 12520,
                "name": "BoostedBarCrossed",
                "nodeType": "EnumValue",
                "src": "945:17:57"
              }
            ],
            "name": "ExecutionState",
            "nodeType": "EnumDefinition",
            "src": "848:115:57"
          },
          {
            "canonicalName": "GenesisProtocolLogic.Parameters",
            "id": 12548,
            "members": [
              {
                "constant": false,
                "id": 12523,
                "name": "queuedVoteRequiredPercentage",
                "nodeType": "VariableDeclaration",
                "scope": 12548,
                "src": "1029:36:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12522,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1029:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12525,
                "name": "queuedVotePeriodLimit",
                "nodeType": "VariableDeclaration",
                "scope": 12548,
                "src": "1113:29:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12524,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1113:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12527,
                "name": "boostedVotePeriodLimit",
                "nodeType": "VariableDeclaration",
                "scope": 12548,
                "src": "1218:30:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12526,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1218:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12529,
                "name": "preBoostedVotePeriodLimit",
                "nodeType": "VariableDeclaration",
                "scope": 12548,
                "src": "1311:33:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12528,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1311:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12531,
                "name": "thresholdConst",
                "nodeType": "VariableDeclaration",
                "scope": 12548,
                "src": "1485:22:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12530,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1485:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12533,
                "name": "limitExponentValue",
                "nodeType": "VariableDeclaration",
                "scope": 12548,
                "src": "1647:26:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12532,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1647:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12535,
                "name": "quietEndingPeriod",
                "nodeType": "VariableDeclaration",
                "scope": 12548,
                "src": "1815:25:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12534,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1815:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12537,
                "name": "proposingRepReward",
                "nodeType": "VariableDeclaration",
                "scope": 12548,
                "src": "1872:26:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12536,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1872:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12539,
                "name": "votersReputationLossRatio",
                "nodeType": "VariableDeclaration",
                "scope": 12548,
                "src": "1937:33:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12538,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1937:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12541,
                "name": "minimumDaoBounty",
                "nodeType": "VariableDeclaration",
                "scope": 12548,
                "src": "2110:24:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12540,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2110:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12543,
                "name": "daoBountyConst",
                "nodeType": "VariableDeclaration",
                "scope": 12548,
                "src": "2144:22:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12542,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2144:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12545,
                "name": "activationTime",
                "nodeType": "VariableDeclaration",
                "scope": 12548,
                "src": "2332:22:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12544,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2332:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12547,
                "name": "voteOnBehalf",
                "nodeType": "VariableDeclaration",
                "scope": 12548,
                "src": "2521:20:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 12546,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "2521:7:57",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Parameters",
            "nodeType": "StructDefinition",
            "scope": 15047,
            "src": "1001:1547:57",
            "visibility": "public"
          },
          {
            "canonicalName": "GenesisProtocolLogic.Voter",
            "id": 12555,
            "members": [
              {
                "constant": false,
                "id": 12550,
                "name": "vote",
                "nodeType": "VariableDeclaration",
                "scope": 12555,
                "src": "2577:12:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12549,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2577:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12552,
                "name": "reputation",
                "nodeType": "VariableDeclaration",
                "scope": 12555,
                "src": "2616:18:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12551,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2616:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12554,
                "name": "preBoosted",
                "nodeType": "VariableDeclaration",
                "scope": 12555,
                "src": "2676:15:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 12553,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "2676:4:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Voter",
            "nodeType": "StructDefinition",
            "scope": 15047,
            "src": "2554:144:57",
            "visibility": "public"
          },
          {
            "canonicalName": "GenesisProtocolLogic.Staker",
            "id": 12562,
            "members": [
              {
                "constant": false,
                "id": 12557,
                "name": "vote",
                "nodeType": "VariableDeclaration",
                "scope": 12562,
                "src": "2728:12:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12556,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2728:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12559,
                "name": "amount",
                "nodeType": "VariableDeclaration",
                "scope": 12562,
                "src": "2767:14:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12558,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2767:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12561,
                "name": "amount4Bounty",
                "nodeType": "VariableDeclaration",
                "scope": 12562,
                "src": "2819:21:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12560,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "2819:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Staker",
            "nodeType": "StructDefinition",
            "scope": 15047,
            "src": "2704:206:57",
            "visibility": "public"
          },
          {
            "canonicalName": "GenesisProtocolLogic.Proposal",
            "id": 12613,
            "members": [
              {
                "constant": false,
                "id": 12564,
                "name": "organizationId",
                "nodeType": "VariableDeclaration",
                "scope": 12613,
                "src": "2942:22:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 12563,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "2942:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12566,
                "name": "callbacks",
                "nodeType": "VariableDeclaration",
                "scope": 12613,
                "src": "3039:17:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 12565,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "3039:7:57",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12568,
                "name": "state",
                "nodeType": "VariableDeclaration",
                "scope": 12613,
                "src": "3115:19:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_enum$_ProposalState_$12514",
                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 12567,
                  "name": "ProposalState",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 12514,
                  "src": "3115:13:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_ProposalState_$12514",
                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12570,
                "name": "winningVote",
                "nodeType": "VariableDeclaration",
                "scope": 12613,
                "src": "3144:19:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12569,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3144:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12572,
                "name": "proposer",
                "nodeType": "VariableDeclaration",
                "scope": 12613,
                "src": "3193:16:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 12571,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "3193:7:57",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12574,
                "name": "currentBoostedVotePeriodLimit",
                "nodeType": "VariableDeclaration",
                "scope": 12613,
                "src": "3313:37:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12573,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3313:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12576,
                "name": "paramsHash",
                "nodeType": "VariableDeclaration",
                "scope": 12613,
                "src": "3360:18:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 12575,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "3360:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12578,
                "name": "daoBountyRemain",
                "nodeType": "VariableDeclaration",
                "scope": 12613,
                "src": "3388:23:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12577,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3388:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12580,
                "name": "daoBounty",
                "nodeType": "VariableDeclaration",
                "scope": 12613,
                "src": "3496:17:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12579,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3496:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12582,
                "name": "totalStakes",
                "nodeType": "VariableDeclaration",
                "scope": 12613,
                "src": "3523:19:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12581,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3523:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12584,
                "name": "confidenceThreshold",
                "nodeType": "VariableDeclaration",
                "scope": 12613,
                "src": "3620:27:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12583,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3620:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12586,
                "name": "expirationCallBountyPercentage",
                "nodeType": "VariableDeclaration",
                "scope": 12613,
                "src": "3747:38:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 12585,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3747:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12590,
                "name": "times",
                "nodeType": "VariableDeclaration",
                "scope": 12613,
                "src": "3795:13:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr",
                  "typeString": "uint256[3]"
                },
                "typeName": {
                  "baseType": {
                    "id": 12587,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3795:4:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 12589,
                  "length": {
                    "argumentTypes": null,
                    "hexValue": "33",
                    "id": 12588,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3800:1:57",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": null,
                      "typeString": null
                    },
                    "value": "3"
                  },
                  "nodeType": "ArrayTypeName",
                  "src": "3795:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr",
                    "typeString": "uint256[3]"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12592,
                "name": "daoRedeemItsWinnings",
                "nodeType": "VariableDeclaration",
                "scope": 12613,
                "src": "3954:25:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 12591,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "3954:4:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12596,
                "name": "votes",
                "nodeType": "VariableDeclaration",
                "scope": 12613,
                "src": "4026:40:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                  "typeString": "mapping(uint256 => uint256)"
                },
                "typeName": {
                  "id": 12595,
                  "keyType": {
                    "id": 12593,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4034:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "4026:34:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "valueType": {
                    "id": 12594,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4048:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12600,
                "name": "preBoostedVotes",
                "nodeType": "VariableDeclaration",
                "scope": 12613,
                "src": "4113:50:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                  "typeString": "mapping(uint256 => uint256)"
                },
                "typeName": {
                  "id": 12599,
                  "keyType": {
                    "id": 12597,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4121:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "4113:34:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "valueType": {
                    "id": 12598,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4135:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12604,
                "name": "voters",
                "nodeType": "VariableDeclaration",
                "scope": 12613,
                "src": "4207:37:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$12555_storage_$",
                  "typeString": "mapping(address => struct GenesisProtocolLogic.Voter)"
                },
                "typeName": {
                  "id": 12603,
                  "keyType": {
                    "id": 12601,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4215:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "4207:30:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$12555_storage_$",
                    "typeString": "mapping(address => struct GenesisProtocolLogic.Voter)"
                  },
                  "valueType": {
                    "contractScope": null,
                    "id": 12602,
                    "name": "Voter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12555,
                    "src": "4227:5:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Voter_$12555_storage_ptr",
                      "typeString": "struct GenesisProtocolLogic.Voter"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12608,
                "name": "stakes",
                "nodeType": "VariableDeclaration",
                "scope": 12613,
                "src": "4289:41:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                  "typeString": "mapping(uint256 => uint256)"
                },
                "typeName": {
                  "id": 12607,
                  "keyType": {
                    "id": 12605,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4297:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "4289:34:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "valueType": {
                    "id": 12606,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4311:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 12612,
                "name": "stakers",
                "nodeType": "VariableDeclaration",
                "scope": 12613,
                "src": "4372:38:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$12562_storage_$",
                  "typeString": "mapping(address => struct GenesisProtocolLogic.Staker)"
                },
                "typeName": {
                  "id": 12611,
                  "keyType": {
                    "id": 12609,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4380:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "4372:30:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$12562_storage_$",
                    "typeString": "mapping(address => struct GenesisProtocolLogic.Staker)"
                  },
                  "valueType": {
                    "contractScope": null,
                    "id": 12610,
                    "name": "Staker",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12562,
                    "src": "4392:6:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                      "typeString": "struct GenesisProtocolLogic.Staker"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Proposal",
            "nodeType": "StructDefinition",
            "scope": 15047,
            "src": "2916:1501:57",
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 12625,
            "name": "Stake",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 12624,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12615,
                  "indexed": true,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 12625,
                  "src": "4435:27:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12614,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4435:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12617,
                  "indexed": true,
                  "name": "_organization",
                  "nodeType": "VariableDeclaration",
                  "scope": 12625,
                  "src": "4472:29:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12616,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4472:7:57",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12619,
                  "indexed": true,
                  "name": "_staker",
                  "nodeType": "VariableDeclaration",
                  "scope": 12625,
                  "src": "4511:23:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12618,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4511:7:57",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12621,
                  "indexed": false,
                  "name": "_vote",
                  "nodeType": "VariableDeclaration",
                  "scope": 12625,
                  "src": "4544:13:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12620,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4544:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12623,
                  "indexed": false,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 12625,
                  "src": "4567:15:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12622,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4567:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4434:154:57"
            },
            "src": "4423:166:57"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 12635,
            "name": "Redeem",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 12634,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12627,
                  "indexed": true,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 12635,
                  "src": "4608:27:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12626,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4608:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12629,
                  "indexed": true,
                  "name": "_organization",
                  "nodeType": "VariableDeclaration",
                  "scope": 12635,
                  "src": "4645:29:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12628,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4645:7:57",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12631,
                  "indexed": true,
                  "name": "_beneficiary",
                  "nodeType": "VariableDeclaration",
                  "scope": 12635,
                  "src": "4684:28:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12630,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4684:7:57",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12633,
                  "indexed": false,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 12635,
                  "src": "4722:15:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12632,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4722:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4607:136:57"
            },
            "src": "4595:149:57"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 12645,
            "name": "RedeemDaoBounty",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 12644,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12637,
                  "indexed": true,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 12645,
                  "src": "4772:27:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12636,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4772:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12639,
                  "indexed": true,
                  "name": "_organization",
                  "nodeType": "VariableDeclaration",
                  "scope": 12645,
                  "src": "4809:29:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12638,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4809:7:57",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12641,
                  "indexed": true,
                  "name": "_beneficiary",
                  "nodeType": "VariableDeclaration",
                  "scope": 12645,
                  "src": "4848:28:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12640,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4848:7:57",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12643,
                  "indexed": false,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 12645,
                  "src": "4886:15:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12642,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4886:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4771:136:57"
            },
            "src": "4750:158:57"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 12655,
            "name": "RedeemReputation",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 12654,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12647,
                  "indexed": true,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 12655,
                  "src": "4937:27:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12646,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4937:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12649,
                  "indexed": true,
                  "name": "_organization",
                  "nodeType": "VariableDeclaration",
                  "scope": 12655,
                  "src": "4974:29:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12648,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4974:7:57",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12651,
                  "indexed": true,
                  "name": "_beneficiary",
                  "nodeType": "VariableDeclaration",
                  "scope": 12655,
                  "src": "5013:28:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12650,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5013:7:57",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12653,
                  "indexed": false,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 12655,
                  "src": "5051:15:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12652,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5051:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4936:136:57"
            },
            "src": "4914:159:57"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 12661,
            "name": "StateChange",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 12660,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12657,
                  "indexed": true,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 12661,
                  "src": "5097:27:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12656,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5097:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12659,
                  "indexed": false,
                  "name": "_proposalState",
                  "nodeType": "VariableDeclaration",
                  "scope": 12661,
                  "src": "5126:28:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_ProposalState_$12514",
                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12658,
                    "name": "ProposalState",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12514,
                    "src": "5126:13:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ProposalState_$12514",
                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5096:59:57"
            },
            "src": "5079:77:57"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 12667,
            "name": "GPExecuteProposal",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 12666,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12663,
                  "indexed": true,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 12667,
                  "src": "5185:27:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12662,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5185:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12665,
                  "indexed": false,
                  "name": "_executionState",
                  "nodeType": "VariableDeclaration",
                  "scope": 12667,
                  "src": "5214:30:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_ExecutionState_$12521",
                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12664,
                    "name": "ExecutionState",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12521,
                    "src": "5214:14:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ExecutionState_$12521",
                      "typeString": "enum GenesisProtocolLogic.ExecutionState"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5184:61:57"
            },
            "src": "5161:85:57"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 12675,
            "name": "ExpirationCallBounty",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 12674,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12669,
                  "indexed": true,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 12675,
                  "src": "5278:27:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12668,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5278:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12671,
                  "indexed": true,
                  "name": "_beneficiary",
                  "nodeType": "VariableDeclaration",
                  "scope": 12675,
                  "src": "5307:28:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12670,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5307:7:57",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12673,
                  "indexed": false,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 12675,
                  "src": "5337:15:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12672,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5337:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5277:76:57"
            },
            "src": "5251:103:57"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 12681,
            "name": "ConfidenceLevelChange",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 12680,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12677,
                  "indexed": true,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 12681,
                  "src": "5387:27:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12676,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5387:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12679,
                  "indexed": false,
                  "name": "_confidenceThreshold",
                  "nodeType": "VariableDeclaration",
                  "scope": 12681,
                  "src": "5416:28:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12678,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5416:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5386:59:57"
            },
            "src": "5359:87:57"
          },
          {
            "constant": false,
            "id": 12685,
            "name": "parameters",
            "nodeType": "VariableDeclaration",
            "scope": 15047,
            "src": "5452:46:57",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$12548_storage_$",
              "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters)"
            },
            "typeName": {
              "id": 12684,
              "keyType": {
                "id": 12682,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "5460:7:57",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "5452:28:57",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$12548_storage_$",
                "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters)"
              },
              "valueType": {
                "contractScope": null,
                "id": 12683,
                "name": "Parameters",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 12548,
                "src": "5469:10:57",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Parameters_$12548_storage_ptr",
                  "typeString": "struct GenesisProtocolLogic.Parameters"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 12689,
            "name": "proposals",
            "nodeType": "VariableDeclaration",
            "scope": 15047,
            "src": "5544:43:57",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$12613_storage_$",
              "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal)"
            },
            "typeName": {
              "id": 12688,
              "keyType": {
                "id": 12686,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "5552:7:57",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "5544:26:57",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$12613_storage_$",
                "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal)"
              },
              "valueType": {
                "contractScope": null,
                "id": 12687,
                "name": "Proposal",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 12613,
                "src": "5561:8:57",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                  "typeString": "struct GenesisProtocolLogic.Proposal"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 12693,
            "name": "orgBoostedProposalsCnt",
            "nodeType": "VariableDeclaration",
            "scope": 15047,
            "src": "5656:52:57",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
              "typeString": "mapping(bytes32 => uint256)"
            },
            "typeName": {
              "id": 12692,
              "keyType": {
                "id": 12690,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "5664:7:57",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "5656:22:57",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                "typeString": "mapping(bytes32 => uint256)"
              },
              "valueType": {
                "id": 12691,
                "name": "uint",
                "nodeType": "ElementaryTypeName",
                "src": "5673:4:57",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 12697,
            "name": "organizations",
            "nodeType": "VariableDeclaration",
            "scope": 15047,
            "src": "5758:60:57",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
              "typeString": "mapping(bytes32 => address)"
            },
            "typeName": {
              "id": 12696,
              "keyType": {
                "id": 12694,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "5766:7:57",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "5758:39:57",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                "typeString": "mapping(bytes32 => address)"
              },
              "valueType": {
                "id": 12695,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "5784:7:57",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 12701,
            "name": "averagesDownstakesOfBoosted",
            "nodeType": "VariableDeclaration",
            "scope": 15047,
            "src": "5877:86:57",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
              "typeString": "mapping(bytes32 => uint256)"
            },
            "typeName": {
              "id": 12700,
              "keyType": {
                "id": 12698,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "5885:7:57",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "5877:51:57",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                "typeString": "mapping(bytes32 => uint256)"
              },
              "valueType": {
                "id": 12699,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "5906:7:57",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 12704,
            "name": "NUM_OF_CHOICES",
            "nodeType": "VariableDeclaration",
            "scope": 15047,
            "src": "5969:42:57",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 12702,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "5969:7:57",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "32",
              "id": 12703,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "6010:1:57",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_2_by_1",
                "typeString": "int_const 2"
              },
              "value": "2"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 12707,
            "name": "NO",
            "nodeType": "VariableDeclaration",
            "scope": 15047,
            "src": "6017:30:57",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 12705,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "6017:7:57",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "32",
              "id": 12706,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "6046:1:57",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_2_by_1",
                "typeString": "int_const 2"
              },
              "value": "2"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 12710,
            "name": "YES",
            "nodeType": "VariableDeclaration",
            "scope": 15047,
            "src": "6053:31:57",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 12708,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "6053:7:57",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "31",
              "id": 12709,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "6083:1:57",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1_by_1",
                "typeString": "int_const 1"
              },
              "value": "1"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 12712,
            "name": "proposalsCnt",
            "nodeType": "VariableDeclaration",
            "scope": 15047,
            "src": "6090:27:57",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 12711,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "6090:7:57",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 12714,
            "name": "stakingToken",
            "nodeType": "VariableDeclaration",
            "scope": 15047,
            "src": "6152:26:57",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IERC20_$16748",
              "typeString": "contract IERC20"
            },
            "typeName": {
              "contractScope": null,
              "id": 12713,
              "name": "IERC20",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 16748,
              "src": "6152:6:57",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IERC20_$16748",
                "typeString": "contract IERC20"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 12717,
            "name": "GEN_TOKEN_ADDRESS",
            "nodeType": "VariableDeclaration",
            "scope": 15047,
            "src": "6184:87:57",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 12715,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "6184:7:57",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307835343346663232374636344161313765413133324266393838366341623544423535444341646466",
              "id": 12716,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "6229:42:57",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_address_payable",
                "typeString": "address payable"
              },
              "value": "0x543Ff227F64Aa17eA132Bf9886cAb5DB55DCAddf"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 12720,
            "name": "MAX_BOOSTED_PROPOSALS",
            "nodeType": "VariableDeclaration",
            "scope": 15047,
            "src": "6277:53:57",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 12718,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "6277:7:57",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "34303936",
              "id": 12719,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "6326:4:57",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_4096_by_1",
                "typeString": "int_const 4096"
              },
              "value": "4096"
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 12743,
              "nodeType": "Block",
              "src": "6418:556:57",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12726,
                            "name": "GEN_TOKEN_ADDRESS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12717,
                            "src": "6811:17:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 12725,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6803:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 12727,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6803:26:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 12728,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isContract",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16766,
                      "src": "6803:37:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                        "typeString": "function (address) view returns (bool)"
                      }
                    },
                    "id": 12729,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6803:39:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 12741,
                    "nodeType": "Block",
                    "src": "6915:53:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12739,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 12737,
                            "name": "stakingToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12714,
                            "src": "6929:12:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$16748",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 12738,
                            "name": "_stakingToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12722,
                            "src": "6944:13:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$16748",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "6929:28:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$16748",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 12740,
                        "nodeType": "ExpressionStatement",
                        "src": "6929:28:57"
                      }
                    ]
                  },
                  "id": 12742,
                  "nodeType": "IfStatement",
                  "src": "6799:169:57",
                  "trueBody": {
                    "id": 12736,
                    "nodeType": "Block",
                    "src": "6844:65:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12734,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 12730,
                            "name": "stakingToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12714,
                            "src": "6858:12:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$16748",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 12732,
                                "name": "GEN_TOKEN_ADDRESS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12717,
                                "src": "6880:17:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 12731,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16748,
                              "src": "6873:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$16748_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 12733,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6873:25:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$16748",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "6858:40:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$16748",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 12735,
                        "nodeType": "ExpressionStatement",
                        "src": "6858:40:57"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev Constructor",
            "id": 12744,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12723,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12722,
                  "name": "_stakingToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 12744,
                  "src": "6389:20:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$16748",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 12721,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 16748,
                    "src": "6389:6:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$16748",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6388:22:57"
            },
            "returnParameters": {
              "id": 12724,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6418:0:57"
            },
            "scope": 15047,
            "src": "6377:597:57",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 12755,
              "nodeType": "Block",
              "src": "7196:60:57",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12750,
                            "name": "_proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12746,
                            "src": "7225:11:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 12749,
                          "name": "_isVotable",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15046,
                          "src": "7214:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 12751,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7214:23:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 12748,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16785,
                      "src": "7206:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 12752,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7206:32:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12753,
                  "nodeType": "ExpressionStatement",
                  "src": "7206:32:57"
                },
                {
                  "id": 12754,
                  "nodeType": "PlaceholderStatement",
                  "src": "7248:1:57"
                }
              ]
            },
            "documentation": "@dev Check that the proposal is votable\na proposal is votable if it is in one of the following states:\n PreBoosted,Boosted,QuietEndingPeriod or Queued",
            "id": 12756,
            "name": "votable",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 12747,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12746,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 12756,
                  "src": "7175:19:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12745,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7175:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7174:21:57"
            },
            "src": "7158:98:57",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 12979,
              "nodeType": "Block",
              "src": "7700:2008:57",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12775,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 12770,
                          "name": "now",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16784,
                          "src": "7770:3:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 12771,
                              "name": "parameters",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12685,
                              "src": "7776:10:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$12548_storage_$",
                                "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                              }
                            },
                            "id": 12773,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 12772,
                              "name": "_paramsHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12760,
                              "src": "7787:11:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7776:23:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Parameters_$12548_storage",
                              "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                            }
                          },
                          "id": 12774,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "activationTime",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12545,
                          "src": "7776:38:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7770:44:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6e6f742061637469766520796574",
                        "id": 12776,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7816:16:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_f30c2c4eef761b63d78da11427f8e9c88d014c48e08e70db1400926a3cd70480",
                          "typeString": "literal_string \"not active yet\""
                        },
                        "value": "not active yet"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_f30c2c4eef761b63d78da11427f8e9c88d014c48e08e70db1400926a3cd70480",
                          "typeString": "literal_string \"not active yet\""
                        }
                      ],
                      "id": 12769,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "7762:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 12777,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7762:71:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12778,
                  "nodeType": "ExpressionStatement",
                  "src": "7762:71:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 12785,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 12780,
                              "name": "parameters",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12685,
                              "src": "7889:10:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$12548_storage_$",
                                "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                              }
                            },
                            "id": 12782,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 12781,
                              "name": "_paramsHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12760,
                              "src": "7900:11:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7889:23:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Parameters_$12548_storage",
                              "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                            }
                          },
                          "id": 12783,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "queuedVoteRequiredPercentage",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12523,
                          "src": "7889:52:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3530",
                          "id": 12784,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7945:2:57",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_50_by_1",
                            "typeString": "int_const 50"
                          },
                          "value": "50"
                        },
                        "src": "7889:58:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 12779,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16785,
                      "src": "7881:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 12786,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7881:67:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12787,
                  "nodeType": "ExpressionStatement",
                  "src": "7881:67:57"
                },
                {
                  "assignments": [
                    12789
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12789,
                      "name": "proposalId",
                      "nodeType": "VariableDeclaration",
                      "scope": 12979,
                      "src": "7991:18:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 12788,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7991:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12797,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 12793,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16842,
                            "src": "8039:4:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_GenesisProtocolLogic_$15047",
                              "typeString": "contract GenesisProtocolLogic"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 12794,
                            "name": "proposalsCnt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12712,
                            "src": "8045:12:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_GenesisProtocolLogic_$15047",
                              "typeString": "contract GenesisProtocolLogic"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 12791,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16769,
                            "src": "8022:3:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 12792,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "8022:16:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 12795,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8022:36:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 12790,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16776,
                      "src": "8012:9:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 12796,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8012:47:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7991:68:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12803,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 12798,
                      "name": "proposalsCnt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12712,
                      "src": "8069:12:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 12801,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8101:1:57",
                          "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": 12799,
                          "name": "proposalsCnt",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12712,
                          "src": "8084:12:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12800,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 15898,
                        "src": "8084:16:57",
                        "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": 12802,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8084:19:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8069:34:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 12804,
                  "nodeType": "ExpressionStatement",
                  "src": "8069:34:57"
                },
                {
                  "assignments": [
                    12806
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12806,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 12979,
                      "src": "8140:24:57",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 12805,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12613,
                        "src": "8140:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12807,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8140:24:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12813,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12808,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12806,
                        "src": "8174:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 12810,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "callbacks",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12566,
                      "src": "8174:18:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12811,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16782,
                        "src": "8195:3:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 12812,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "8195:10:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "8174:31:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 12814,
                  "nodeType": "ExpressionStatement",
                  "src": "8174:31:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12826,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12815,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12806,
                        "src": "8215:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 12817,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "organizationId",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12564,
                      "src": "8215:23:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12821,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16782,
                                "src": "8268:3:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 12822,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "8268:10:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 12823,
                              "name": "_organization",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12764,
                              "src": "8280:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 12819,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16769,
                              "src": "8251:3:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 12820,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodePacked",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8251:16:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 12824,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8251:43:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 12818,
                        "name": "keccak256",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16776,
                        "src": "8241:9:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (bytes memory) pure returns (bytes32)"
                        }
                      },
                      "id": 12825,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8241:54:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "8215:80:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 12827,
                  "nodeType": "ExpressionStatement",
                  "src": "8215:80:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12833,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12828,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12806,
                        "src": "8306:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 12830,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "state",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12568,
                      "src": "8306:14:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ProposalState_$12514",
                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12831,
                        "name": "ProposalState",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12514,
                        "src": "8323:13:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                          "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                        }
                      },
                      "id": 12832,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "Queued",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "8323:20:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ProposalState_$12514",
                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                      }
                    },
                    "src": "8306:37:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ProposalState_$12514",
                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                    }
                  },
                  "id": 12834,
                  "nodeType": "ExpressionStatement",
                  "src": "8306:37:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12841,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12835,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12806,
                          "src": "8407:8:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                            "typeString": "struct GenesisProtocolLogic.Proposal memory"
                          }
                        },
                        "id": 12838,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "times",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12590,
                        "src": "8407:14:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$3_memory",
                          "typeString": "uint256[3] memory"
                        }
                      },
                      "id": 12839,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 12837,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8422:1:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8407:17:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 12840,
                      "name": "now",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16784,
                      "src": "8427:3:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8407:23:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 12842,
                  "nodeType": "ExpressionStatement",
                  "src": "8407:23:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12850,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12843,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12806,
                        "src": "8456:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 12845,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "currentBoostedVotePeriodLimit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12574,
                      "src": "8456:38:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 12846,
                          "name": "parameters",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12685,
                          "src": "8497:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$12548_storage_$",
                            "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                          }
                        },
                        "id": 12848,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 12847,
                          "name": "_paramsHash",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12760,
                          "src": "8508:11:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "8497:23:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$12548_storage",
                          "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                        }
                      },
                      "id": 12849,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "boostedVotePeriodLimit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12527,
                      "src": "8497:46:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8456:87:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 12851,
                  "nodeType": "ExpressionStatement",
                  "src": "8456:87:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12856,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12852,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12806,
                        "src": "8553:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 12854,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "proposer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12572,
                      "src": "8553:17:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 12855,
                      "name": "_proposer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12762,
                      "src": "8573:9:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "8553:29:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 12857,
                  "nodeType": "ExpressionStatement",
                  "src": "8553:29:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12862,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12858,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12806,
                        "src": "8592:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 12860,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "winningVote",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12570,
                      "src": "8592:20:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 12861,
                      "name": "NO",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12707,
                      "src": "8615:2:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8592:25:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 12863,
                  "nodeType": "ExpressionStatement",
                  "src": "8592:25:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12868,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12864,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12806,
                        "src": "8627:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 12866,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "paramsHash",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12576,
                      "src": "8627:19:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 12867,
                      "name": "_paramsHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12760,
                      "src": "8649:11:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "8627:33:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 12869,
                  "nodeType": "ExpressionStatement",
                  "src": "8627:33:57"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 12877,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 12870,
                        "name": "organizations",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12697,
                        "src": "8674:13:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 12873,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 12871,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12806,
                          "src": "8688:8:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                            "typeString": "struct GenesisProtocolLogic.Proposal memory"
                          }
                        },
                        "id": 12872,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "organizationId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12564,
                        "src": "8688:23:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "8674:38:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 12875,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8724:1:57",
                          "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": 12874,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "8716:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 12876,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8716:10:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "8674:52:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 12902,
                  "nodeType": "IfStatement",
                  "src": "8670:292:57",
                  "trueBody": {
                    "id": 12901,
                    "nodeType": "Block",
                    "src": "8728:234:57",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 12882,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 12878,
                            "name": "_organization",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12764,
                            "src": "8746:13:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 12880,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8771:1:57",
                                "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": 12879,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8763:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 12881,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8763:10:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "8746:27:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 12899,
                          "nodeType": "Block",
                          "src": "8865:87:57",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 12897,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 12892,
                                    "name": "organizations",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12697,
                                    "src": "8883:13:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                      "typeString": "mapping(bytes32 => address)"
                                    }
                                  },
                                  "id": 12895,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 12893,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12806,
                                      "src": "8897:8:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal memory"
                                      }
                                    },
                                    "id": 12894,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "organizationId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12564,
                                    "src": "8897:23:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "8883:38:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 12896,
                                  "name": "_organization",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12764,
                                  "src": "8924:13:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "8883:54:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 12898,
                              "nodeType": "ExpressionStatement",
                              "src": "8883:54:57"
                            }
                          ]
                        },
                        "id": 12900,
                        "nodeType": "IfStatement",
                        "src": "8742:210:57",
                        "trueBody": {
                          "id": 12891,
                          "nodeType": "Block",
                          "src": "8775:84:57",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 12889,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 12883,
                                    "name": "organizations",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12697,
                                    "src": "8793:13:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                      "typeString": "mapping(bytes32 => address)"
                                    }
                                  },
                                  "id": 12886,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 12884,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12806,
                                      "src": "8807:8:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal memory"
                                      }
                                    },
                                    "id": 12885,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "organizationId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12564,
                                    "src": "8807:23:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "8793:38:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 12887,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16782,
                                    "src": "8834:3:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 12888,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "8834:10:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "8793:51:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 12890,
                              "nodeType": "ExpressionStatement",
                              "src": "8793:51:57"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    12904
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12904,
                      "name": "daoBounty",
                      "nodeType": "VariableDeclaration",
                      "scope": 12979,
                      "src": "8997:17:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12903,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8997:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12918,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "313030",
                        "id": 12916,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9126:3:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_100_by_1",
                          "typeString": "int_const 100"
                        },
                        "value": "100"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_100_by_1",
                          "typeString": "int_const 100"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 12910,
                              "name": "averagesDownstakesOfBoosted",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12701,
                              "src": "9068:27:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 12913,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 12911,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12806,
                                "src": "9096:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal memory"
                                }
                              },
                              "id": 12912,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "organizationId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12564,
                              "src": "9096:23:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9068:52:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 12905,
                                "name": "parameters",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12685,
                                "src": "9025:10:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$12548_storage_$",
                                  "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                                }
                              },
                              "id": 12907,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 12906,
                                "name": "_paramsHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12760,
                                "src": "9036:11:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "9025:23:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Parameters_$12548_storage",
                                "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                              }
                            },
                            "id": 12908,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "daoBountyConst",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12543,
                            "src": "9025:38:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 12909,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 15826,
                          "src": "9025:42:57",
                          "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": 12914,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9025:96:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 12915,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "div",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15850,
                      "src": "9025:100:57",
                      "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": 12917,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9025:105:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8997:133:57"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 12924,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 12919,
                      "name": "daoBounty",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12904,
                      "src": "9144:9:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 12920,
                          "name": "parameters",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12685,
                          "src": "9156:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$12548_storage_$",
                            "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                          }
                        },
                        "id": 12922,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 12921,
                          "name": "_paramsHash",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12760,
                          "src": "9167:11:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "9156:23:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$12548_storage",
                          "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                        }
                      },
                      "id": 12923,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "minimumDaoBounty",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12541,
                      "src": "9156:40:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9144:52:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 12941,
                    "nodeType": "Block",
                    "src": "9296:61:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12939,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12935,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12806,
                              "src": "9310:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal memory"
                              }
                            },
                            "id": 12937,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "daoBountyRemain",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12578,
                            "src": "9310:24:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 12938,
                            "name": "daoBounty",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12904,
                            "src": "9337:9:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9310:36:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12940,
                        "nodeType": "ExpressionStatement",
                        "src": "9310:36:57"
                      }
                    ]
                  },
                  "id": 12942,
                  "nodeType": "IfStatement",
                  "src": "9140:217:57",
                  "trueBody": {
                    "id": 12934,
                    "nodeType": "Block",
                    "src": "9198:92:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 12932,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12925,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12806,
                              "src": "9212:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal memory"
                              }
                            },
                            "id": 12927,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "daoBountyRemain",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12578,
                            "src": "9212:24:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 12928,
                                "name": "parameters",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12685,
                                "src": "9239:10:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$12548_storage_$",
                                  "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                                }
                              },
                              "id": 12930,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 12929,
                                "name": "_paramsHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12760,
                                "src": "9250:11:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "9239:23:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Parameters_$12548_storage",
                                "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                              }
                            },
                            "id": 12931,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "minimumDaoBounty",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12541,
                            "src": "9239:40:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9212:67:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12933,
                        "nodeType": "ExpressionStatement",
                        "src": "9212:67:57"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12948,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12943,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12806,
                        "src": "9366:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 12945,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalStakes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12582,
                      "src": "9366:20:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12946,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12806,
                        "src": "9389:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 12947,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "daoBountyRemain",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12578,
                      "src": "9389:24:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9366:47:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 12949,
                  "nodeType": "ExpressionStatement",
                  "src": "9366:47:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12954,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 12950,
                        "name": "proposals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12689,
                        "src": "9423:9:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$12613_storage_$",
                          "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                        }
                      },
                      "id": 12952,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 12951,
                        "name": "proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12789,
                        "src": "9433:10:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "9423:21:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$12613_storage",
                        "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 12953,
                      "name": "proposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12806,
                      "src": "9447:8:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal memory"
                      }
                    },
                    "src": "9423:32:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$12613_storage",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                    }
                  },
                  "id": 12955,
                  "nodeType": "ExpressionStatement",
                  "src": "9423:32:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12964,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 12956,
                            "name": "proposals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12689,
                            "src": "9465:9:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$12613_storage_$",
                              "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                            }
                          },
                          "id": 12958,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 12957,
                            "name": "proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12789,
                            "src": "9475:10:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9465:21:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$12613_storage",
                            "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                          }
                        },
                        "id": 12959,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "stakes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12608,
                        "src": "9465:28:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 12961,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 12960,
                        "name": "NO",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12707,
                        "src": "9494:2:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "9465:32:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 12962,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12806,
                        "src": "9500:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 12963,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "daoBountyRemain",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12578,
                      "src": "9500:24:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9465:59:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 12965,
                  "nodeType": "ExpressionStatement",
                  "src": "9465:59:57"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 12967,
                        "name": "proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12789,
                        "src": "9583:10:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 12968,
                          "name": "organizations",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12697,
                          "src": "9595:13:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                            "typeString": "mapping(bytes32 => address)"
                          }
                        },
                        "id": 12971,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 12969,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12806,
                            "src": "9609:8:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal memory"
                            }
                          },
                          "id": 12970,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "organizationId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12564,
                          "src": "9609:23:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "9595:38:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12972,
                        "name": "NUM_OF_CHOICES",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12704,
                        "src": "9635:14:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12973,
                        "name": "_proposer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12762,
                        "src": "9651:9:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 12974,
                        "name": "_paramsHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12760,
                        "src": "9662:11:57",
                        "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",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 12966,
                      "name": "NewProposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15079,
                      "src": "9571:11:57",
                      "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": 12975,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9571:103:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 12976,
                  "nodeType": "EmitStatement",
                  "src": "9566:108:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 12977,
                    "name": "proposalId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 12789,
                    "src": "9691:10:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 12768,
                  "id": 12978,
                  "nodeType": "Return",
                  "src": "9684:17:57"
                }
              ]
            },
            "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 _paramsHash parameters hash\n@param _proposer address\n@param _organization address",
            "id": 12980,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "propose",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12765,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12758,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12980,
                  "src": "7582:7:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12757,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7582:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12760,
                  "name": "_paramsHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 12980,
                  "src": "7591:19:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12759,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7591:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12762,
                  "name": "_proposer",
                  "nodeType": "VariableDeclaration",
                  "scope": 12980,
                  "src": "7612:17:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12761,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7612:7:57",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12764,
                  "name": "_organization",
                  "nodeType": "VariableDeclaration",
                  "scope": 12980,
                  "src": "7631:21:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12763,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7631:7:57",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7581:72:57"
            },
            "returnParameters": {
              "id": 12768,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12767,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 12980,
                  "src": "7687:7:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12766,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7687:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7686:9:57"
            },
            "scope": 15047,
            "src": "7565:2143:57",
            "stateMutability": "nonpayable",
            "superFunction": 15128,
            "visibility": "external"
          },
          {
            "body": {
              "id": 13083,
              "nodeType": "Block",
              "src": "10059:995:57",
              "statements": [
                {
                  "assignments": [
                    12988
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 12988,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 13083,
                      "src": "10069:25:57",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 12987,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12613,
                        "src": "10069:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 12992,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 12989,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12689,
                      "src": "10097:9:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$12613_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                      }
                    },
                    "id": 12991,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 12990,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12982,
                      "src": "10107:11:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "10097:22:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$12613_storage",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10069:50:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 13004,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$12514",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 12998,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12994,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12988,
                              "src": "10137:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 12995,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12568,
                            "src": "10137:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12996,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12514,
                              "src": "10155:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 12997,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Boosted",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10155:21:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "10137:39:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$12514",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 13003,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 12999,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12988,
                              "src": "10180:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 13000,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12568,
                            "src": "10180:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13001,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12514,
                              "src": "10198:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 13002,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "QuietEndingPeriod",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10198:31:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "10180:49:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "10137:92:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "70726f706f73616c20737461746520696e206e6f7420426f6f73746564206e6f72205175696574456e64696e67506572696f64",
                        "id": 13005,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10239:53:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d12753c56f593192768acab33c56c3c76e99c56e3892b0d2f229882577785553",
                          "typeString": "literal_string \"proposal state in not Boosted nor QuietEndingPeriod\""
                        },
                        "value": "proposal state in not Boosted nor QuietEndingPeriod"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d12753c56f593192768acab33c56c3c76e99c56e3892b0d2f229882577785553",
                          "typeString": "literal_string \"proposal state in not Boosted nor QuietEndingPeriod\""
                        }
                      ],
                      "id": 12993,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "10129:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13006,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10129:164:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13007,
                  "nodeType": "ExpressionStatement",
                  "src": "10129:164:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 13010,
                            "name": "_proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12982,
                            "src": "10320:11:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 13009,
                          "name": "_execute",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14496,
                          "src": "10311:8:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) returns (bool)"
                          }
                        },
                        "id": 13011,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10311:21:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "70726f706f73616c206e65656420746f20657870697265",
                        "id": 13012,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10334:25:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_194736d0946e0cd4d131aa98afe9f266adc8d4f15ccac91b5a140d100c4a55cc",
                          "typeString": "literal_string \"proposal need to expire\""
                        },
                        "value": "proposal need to expire"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_194736d0946e0cd4d131aa98afe9f266adc8d4f15ccac91b5a140d100c4a55cc",
                          "typeString": "literal_string \"proposal need to expire\""
                        }
                      ],
                      "id": 13008,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "10303:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13013,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10303:57:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13014,
                  "nodeType": "ExpressionStatement",
                  "src": "10303:57:57"
                },
                {
                  "assignments": [
                    13016
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13016,
                      "name": "expirationCallBountyPercentage",
                      "nodeType": "VariableDeclaration",
                      "scope": 13083,
                      "src": "10370:38:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 13015,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10370:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13037,
                  "initialValue": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "3135",
                                "id": 13033,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10561:2:57",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_15_by_1",
                                  "typeString": "int_const 15"
                                },
                                "value": "15"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_15_by_1",
                                  "typeString": "int_const 15"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 13026,
                                            "name": "proposal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12988,
                                            "src": "10537:8:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                            }
                                          },
                                          "id": 13027,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "times",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 12590,
                                          "src": "10537:14:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$3_storage",
                                            "typeString": "uint256[3] storage ref"
                                          }
                                        },
                                        "id": 13029,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 13028,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "10552:1:57",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "10537:17:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 13023,
                                          "name": "proposal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12988,
                                          "src": "10494:8:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                          }
                                        },
                                        "id": 13024,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "currentBoostedVotePeriodLimit",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 12574,
                                        "src": "10494:38:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 13025,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "add",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 15898,
                                      "src": "10494:42:57",
                                      "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": 13030,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10494:61:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 13021,
                                    "name": "now",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16784,
                                    "src": "10486:3:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 13022,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 15874,
                                  "src": "10486:7:57",
                                  "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": 13031,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10486:70:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 13032,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "div",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15850,
                              "src": "10486:74:57",
                              "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": 13034,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10486:78:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 13018,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10479:1:57",
                                "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"
                                }
                              ],
                              "id": 13017,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10474:4:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": "uint"
                            },
                            "id": 13019,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10474:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 13020,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "add",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 15898,
                          "src": "10474:11:57",
                          "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": 13035,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10474:91:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 13036,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "10473:93:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10370:196:57"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 13040,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 13038,
                      "name": "expirationCallBountyPercentage",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13016,
                      "src": "10580:30:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "313030",
                      "id": 13039,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10613:3:57",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_100_by_1",
                        "typeString": "int_const 100"
                      },
                      "value": "100"
                    },
                    "src": "10580:36:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 13046,
                  "nodeType": "IfStatement",
                  "src": "10576:103:57",
                  "trueBody": {
                    "id": 13045,
                    "nodeType": "Block",
                    "src": "10618:61:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13043,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 13041,
                            "name": "expirationCallBountyPercentage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13016,
                            "src": "10632:30:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "313030",
                            "id": 13042,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10665:3:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            },
                            "value": "100"
                          },
                          "src": "10632:36:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13044,
                        "nodeType": "ExpressionStatement",
                        "src": "10632:36:57"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 13051,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13047,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12988,
                        "src": "10688:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 13049,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "expirationCallBountyPercentage",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12586,
                      "src": "10688:39:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 13050,
                      "name": "expirationCallBountyPercentage",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13016,
                      "src": "10730:30:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10688:72:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 13052,
                  "nodeType": "ExpressionStatement",
                  "src": "10688:72:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 13064,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 13053,
                      "name": "expirationCallBounty",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12985,
                      "src": "10770:20:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "313030",
                          "id": 13062,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10854:3:57",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_100_by_1",
                            "typeString": "int_const 100"
                          },
                          "value": "100"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_100_by_1",
                            "typeString": "int_const 100"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13056,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12988,
                                  "src": "10828:8:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 13057,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "stakes",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12608,
                                "src": "10828:15:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                  "typeString": "mapping(uint256 => uint256)"
                                }
                              },
                              "id": 13059,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 13058,
                                "name": "YES",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12710,
                                "src": "10844:3:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10828:20:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 13054,
                              "name": "expirationCallBountyPercentage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13016,
                              "src": "10793:30:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 13055,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15826,
                            "src": "10793:34:57",
                            "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": 13060,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10793:56:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13061,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "div",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 15850,
                        "src": "10793:60:57",
                        "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": 13063,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10793:65:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10770:88:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 13065,
                  "nodeType": "ExpressionStatement",
                  "src": "10770:88:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13069,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16782,
                              "src": "10898:3:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 13070,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10898:10:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 13071,
                            "name": "expirationCallBounty",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12985,
                            "src": "10910:20:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 13067,
                            "name": "stakingToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12714,
                            "src": "10876:12:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$16748",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 13068,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 16690,
                          "src": "10876:21:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) external returns (bool)"
                          }
                        },
                        "id": 13072,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10876:55:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "7472616e7366657220746f206d73672e73656e646572206661696c6564",
                        "id": 13073,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10933:31:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b85ceb8ee02c2d2292ab8271b7e4c009f72c6e882f9263faea1f89e089f0781d",
                          "typeString": "literal_string \"transfer to msg.sender failed\""
                        },
                        "value": "transfer to msg.sender failed"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b85ceb8ee02c2d2292ab8271b7e4c009f72c6e882f9263faea1f89e089f0781d",
                          "typeString": "literal_string \"transfer to msg.sender failed\""
                        }
                      ],
                      "id": 13066,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "10868:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13074,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10868:97:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13075,
                  "nodeType": "ExpressionStatement",
                  "src": "10868:97:57"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 13077,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12982,
                        "src": "11001:11:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 13078,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16782,
                          "src": "11014:3:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 13079,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "11014:10:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 13080,
                        "name": "expirationCallBounty",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12985,
                        "src": "11026:20:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 13076,
                      "name": "ExpirationCallBounty",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12675,
                      "src": "10980:20:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,address,uint256)"
                      }
                    },
                    "id": 13081,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10980:67:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13082,
                  "nodeType": "EmitStatement",
                  "src": "10975:72:57"
                }
              ]
            },
            "documentation": "@dev executeBoosted try to execute a boosted or QuietEndingPeriod proposal if it is expired\n@param _proposalId the id of the proposal\n@return uint256 expirationCallBounty the bounty amount for the expiration call",
            "id": 13084,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "executeBoosted",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 12983,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12982,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 13084,
                  "src": "9991:19:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12981,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9991:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9990:21:57"
            },
            "returnParameters": {
              "id": 12986,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 12985,
                  "name": "expirationCallBounty",
                  "nodeType": "VariableDeclaration",
                  "scope": 13084,
                  "src": "10029:28:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12984,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10029:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10028:30:57"
            },
            "scope": 15047,
            "src": "9967:1087:57",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 13271,
              "nodeType": "Block",
              "src": "12178:1650:57",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 13106,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13100,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 13096,
                              "name": "_params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13088,
                              "src": "12196:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                                "typeString": "uint256[11] calldata"
                              }
                            },
                            "id": 13098,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 13097,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12204:1:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12196:10:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "313030",
                            "id": 13099,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12210:3:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            },
                            "value": "100"
                          },
                          "src": "12196:17:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13105,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 13101,
                              "name": "_params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13088,
                              "src": "12217:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                                "typeString": "uint256[11] calldata"
                              }
                            },
                            "id": 13103,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 13102,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12225:1:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12217:10:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "3530",
                            "id": 13104,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12231:2:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_50_by_1",
                              "typeString": "int_const 50"
                            },
                            "value": "50"
                          },
                          "src": "12217:16:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "12196:37:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "3530203c3d20717565756564566f7465526571756972656450657263656e74616765203c3d20313030",
                        "id": 13107,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12235:43:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_85b9f97a846fa88401fdf1381ec2257f07804de0b75677db4c2efd7a2ce62825",
                          "typeString": "literal_string \"50 <= queuedVoteRequiredPercentage <= 100\""
                        },
                        "value": "50 <= queuedVoteRequiredPercentage <= 100"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_85b9f97a846fa88401fdf1381ec2257f07804de0b75677db4c2efd7a2ce62825",
                          "typeString": "literal_string \"50 <= queuedVoteRequiredPercentage <= 100\""
                        }
                      ],
                      "id": 13095,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "12188:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13108,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12188:91:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13109,
                  "nodeType": "ExpressionStatement",
                  "src": "12188:91:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 13121,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13115,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 13111,
                              "name": "_params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13088,
                              "src": "12297:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                                "typeString": "uint256[11] calldata"
                              }
                            },
                            "id": 13113,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "34",
                              "id": 13112,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12305:1:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4_by_1",
                                "typeString": "int_const 4"
                              },
                              "value": "4"
                            },
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12297:10:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "3136303030",
                            "id": 13114,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12311:5:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_16000_by_1",
                              "typeString": "int_const 16000"
                            },
                            "value": "16000"
                          },
                          "src": "12297:19:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13120,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 13116,
                              "name": "_params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13088,
                              "src": "12320:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                                "typeString": "uint256[11] calldata"
                              }
                            },
                            "id": 13118,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "34",
                              "id": 13117,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12328:1:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4_by_1",
                                "typeString": "int_const 4"
                              },
                              "value": "4"
                            },
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12320:10:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31303030",
                            "id": 13119,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12333:4:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1000_by_1",
                              "typeString": "int_const 1000"
                            },
                            "value": "1000"
                          },
                          "src": "12320:17:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "12297:40:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "31303030203c207468726573686f6c64436f6e7374203c3d203136303030",
                        "id": 13122,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12339:32:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_daddeca132c5a35f259acc956e39955b67e80315dbd0a39292b027685447fb58",
                          "typeString": "literal_string \"1000 < thresholdConst <= 16000\""
                        },
                        "value": "1000 < thresholdConst <= 16000"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_daddeca132c5a35f259acc956e39955b67e80315dbd0a39292b027685447fb58",
                          "typeString": "literal_string \"1000 < thresholdConst <= 16000\""
                        }
                      ],
                      "id": 13110,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "12289:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13123,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12289:83:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13124,
                  "nodeType": "ExpressionStatement",
                  "src": "12289:83:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 13130,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13126,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13088,
                            "src": "12390:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 13128,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "37",
                            "id": 13127,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12398:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_7_by_1",
                              "typeString": "int_const 7"
                            },
                            "value": "7"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12390:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "313030",
                          "id": 13129,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12404:3:57",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_100_by_1",
                            "typeString": "int_const 100"
                          },
                          "value": "100"
                        },
                        "src": "12390:17:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "766f7465727352657075746174696f6e4c6f7373526174696f203c3d20313030",
                        "id": 13131,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12409:34:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b9a8ef96bdbf8c6f5867a44627f3e55d258417d72b6eee622f0941021e48ccc2",
                          "typeString": "literal_string \"votersReputationLossRatio <= 100\""
                        },
                        "value": "votersReputationLossRatio <= 100"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b9a8ef96bdbf8c6f5867a44627f3e55d258417d72b6eee622f0941021e48ccc2",
                          "typeString": "literal_string \"votersReputationLossRatio <= 100\""
                        }
                      ],
                      "id": 13125,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "12382:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13132,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12382:62:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13133,
                  "nodeType": "ExpressionStatement",
                  "src": "12382:62:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 13141,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13135,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13088,
                            "src": "12462:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 13137,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 13136,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12470:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12462:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13138,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13088,
                            "src": "12476:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 13140,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "35",
                            "id": 13139,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12484:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_5_by_1",
                              "typeString": "int_const 5"
                            },
                            "value": "5"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12476:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "12462:24:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "626f6f73746564566f7465506572696f644c696d6974203e3d207175696574456e64696e67506572696f64",
                        "id": 13142,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12488:45:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_609d5e4f75f374c5d875da125e2b6693907dc86231a6a7783cbd890bcb51f823",
                          "typeString": "literal_string \"boostedVotePeriodLimit >= quietEndingPeriod\""
                        },
                        "value": "boostedVotePeriodLimit >= quietEndingPeriod"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_609d5e4f75f374c5d875da125e2b6693907dc86231a6a7783cbd890bcb51f823",
                          "typeString": "literal_string \"boostedVotePeriodLimit >= quietEndingPeriod\""
                        }
                      ],
                      "id": 13134,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "12454:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13143,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12454:80:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13144,
                  "nodeType": "ExpressionStatement",
                  "src": "12454:80:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 13150,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13146,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13088,
                            "src": "12552:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 13148,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "38",
                            "id": 13147,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12560:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_8_by_1",
                              "typeString": "int_const 8"
                            },
                            "value": "8"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12552:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 13149,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12565:1:57",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "12552:14:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6d696e696d756d44616f426f756e74792073686f756c64206265203e2030",
                        "id": 13151,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12568:32:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9a2fb70181672a535ab2f25b5eb32644096d5daab13cf3cb8ef2cfc2561af9a3",
                          "typeString": "literal_string \"minimumDaoBounty should be > 0\""
                        },
                        "value": "minimumDaoBounty should be > 0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9a2fb70181672a535ab2f25b5eb32644096d5daab13cf3cb8ef2cfc2561af9a3",
                          "typeString": "literal_string \"minimumDaoBounty should be > 0\""
                        }
                      ],
                      "id": 13145,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "12544:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13152,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12544:57:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13153,
                  "nodeType": "ExpressionStatement",
                  "src": "12544:57:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 13159,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13155,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13088,
                            "src": "12619:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 13157,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "39",
                            "id": 13156,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12627:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_9_by_1",
                              "typeString": "int_const 9"
                            },
                            "value": "9"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12619:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 13158,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12632:1:57",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "12619:14:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "64616f426f756e7479436f6e73742073686f756c64206265203e2030",
                        "id": 13160,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12635:30:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_996a184b88eb3effd28e9cef20fafeecddc7873295cdda23c6bb178b43ff4ba3",
                          "typeString": "literal_string \"daoBountyConst should be > 0\""
                        },
                        "value": "daoBountyConst should be > 0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_996a184b88eb3effd28e9cef20fafeecddc7873295cdda23c6bb178b43ff4ba3",
                          "typeString": "literal_string \"daoBountyConst should be > 0\""
                        }
                      ],
                      "id": 13154,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "12611:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13161,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12611:55:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13162,
                  "nodeType": "ExpressionStatement",
                  "src": "12611:55:57"
                },
                {
                  "assignments": [
                    13164
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13164,
                      "name": "paramsHash",
                      "nodeType": "VariableDeclaration",
                      "scope": 13271,
                      "src": "12677:18:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 13163,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "12677:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13169,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 13166,
                        "name": "_params",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13088,
                        "src": "12716:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                          "typeString": "uint256[11] calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 13167,
                        "name": "_voteOnBehalf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13090,
                        "src": "12725:13:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                          "typeString": "uint256[11] calldata"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 13165,
                      "name": "getParametersHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13992,
                      "src": "12698:17:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_array$_t_uint256_$11_memory_ptr_$_t_address_$returns$_t_bytes32_$",
                        "typeString": "function (uint256[11] memory,address) pure returns (bytes32)"
                      }
                    },
                    "id": 13168,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12698:41:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12677:62:57"
                },
                {
                  "assignments": [
                    13171
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13171,
                      "name": "limitExponent",
                      "nodeType": "VariableDeclaration",
                      "scope": 13271,
                      "src": "12819:21:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 13170,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12819:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13173,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "313732",
                    "id": 13172,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "12843:3:57",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_172_by_1",
                      "typeString": "int_const 172"
                    },
                    "value": "172"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12819:27:57"
                },
                {
                  "assignments": [
                    13175
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13175,
                      "name": "j",
                      "nodeType": "VariableDeclaration",
                      "scope": 13271,
                      "src": "12883:9:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 13174,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12883:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13177,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "32",
                    "id": 13176,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "12895:1:57",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2_by_1",
                      "typeString": "int_const 2"
                    },
                    "value": "2"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12883:13:57"
                },
                {
                  "body": {
                    "id": 13218,
                    "nodeType": "Block",
                    "src": "12949:173:57",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 13205,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 13195,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 13191,
                                    "name": "_params",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13088,
                                    "src": "12968:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                                      "typeString": "uint256[11] calldata"
                                    }
                                  },
                                  "id": 13193,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "34",
                                    "id": 13192,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12976:1:57",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_4_by_1",
                                      "typeString": "int_const 4"
                                    },
                                    "value": "4"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "12968:10:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 13194,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13179,
                                  "src": "12981:1:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12968:14:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 13196,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "12967:16:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 13203,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 13197,
                                    "name": "_params",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13088,
                                    "src": "12988:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                                      "typeString": "uint256[11] calldata"
                                    }
                                  },
                                  "id": 13199,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "34",
                                    "id": 13198,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12996:1:57",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_4_by_1",
                                      "typeString": "int_const 4"
                                    },
                                    "value": "4"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "12988:10:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 13202,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 13200,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13179,
                                    "src": "13002:1:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 13201,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13004:1:57",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "13002:3:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12988:17:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 13204,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "12987:19:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "12967:39:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 13214,
                        "nodeType": "IfStatement",
                        "src": "12963:132:57",
                        "trueBody": {
                          "id": 13213,
                          "nodeType": "Block",
                          "src": "13008:87:57",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 13210,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 13206,
                                  "name": "limitExponent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13171,
                                  "src": "13026:13:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 13209,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 13207,
                                    "name": "limitExponent",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13171,
                                    "src": "13042:13:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 13208,
                                    "name": "j",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13175,
                                    "src": "13056:1:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "13042:15:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13026:31:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 13211,
                              "nodeType": "ExpressionStatement",
                              "src": "13026:31:57"
                            },
                            {
                              "id": 13212,
                              "nodeType": "Break",
                              "src": "13075:5:57"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13216,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "13108:3:57",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 13215,
                            "name": "j",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13175,
                            "src": "13108:1:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13217,
                        "nodeType": "ExpressionStatement",
                        "src": "13108:3:57"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 13184,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 13182,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13179,
                      "src": "12929:1:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "3136303030",
                      "id": 13183,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12933:5:57",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_16000_by_1",
                        "typeString": "int_const 16000"
                      },
                      "value": "16000"
                    },
                    "src": "12929:9:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 13219,
                  "initializationExpression": {
                    "assignments": [
                      13179
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 13179,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 13219,
                        "src": "12911:9:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13178,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12911:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 13181,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "32303030",
                      "id": 13180,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12923:4:57",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_2000_by_1",
                        "typeString": "int_const 2000"
                      },
                      "value": "2000"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "12911:16:57"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 13189,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 13185,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13179,
                        "src": "12940:1:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 13188,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 13186,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13179,
                          "src": "12944:1:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "32",
                          "id": 13187,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12946:1:57",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        "src": "12944:3:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "12940:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 13190,
                    "nodeType": "ExpressionStatement",
                    "src": "12940:7:57"
                  },
                  "nodeType": "ForStatement",
                  "src": "12906:216:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 13267,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 13220,
                        "name": "parameters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12685,
                        "src": "13132:10:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$12548_storage_$",
                          "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                        }
                      },
                      "id": 13222,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 13221,
                        "name": "paramsHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13164,
                        "src": "13143:10:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "13132:22:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$12548_storage",
                        "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13224,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13088,
                            "src": "13212:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 13226,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 13225,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13220:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13212:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13227,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13088,
                            "src": "13259:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 13229,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 13228,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13267:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13259:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13230,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13088,
                            "src": "13307:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 13232,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 13231,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13315:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13307:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13233,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13088,
                            "src": "13358:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 13235,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "33",
                            "id": 13234,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13366:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_3_by_1",
                              "typeString": "int_const 3"
                            },
                            "value": "3"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13358:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "31303030",
                                  "id": 13243,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13434:4:57",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1000_by_1",
                                    "typeString": "int_const 1000"
                                  },
                                  "value": "1000"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_1000_by_1",
                                    "typeString": "int_const 1000"
                                  }
                                ],
                                "id": 13242,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "13426:7:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint216_$",
                                  "typeString": "type(uint216)"
                                },
                                "typeName": "uint216"
                              },
                              "id": 13244,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13426:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint216",
                                "typeString": "uint216"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint216",
                                "typeString": "uint216"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 13237,
                                    "name": "_params",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13088,
                                    "src": "13405:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                                      "typeString": "uint256[11] calldata"
                                    }
                                  },
                                  "id": 13239,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "34",
                                    "id": 13238,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13413:1:57",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_4_by_1",
                                      "typeString": "int_const 4"
                                    },
                                    "value": "4"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "13405:10:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 13236,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "13397:7:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint216_$",
                                  "typeString": "type(uint216)"
                                },
                                "typeName": "uint216"
                              },
                              "id": 13240,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13397:19:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint216",
                                "typeString": "uint216"
                              }
                            },
                            "id": 13241,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "fraction",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11134,
                            "src": "13397:28:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint216_$_t_uint216_$returns$_t_uint256_$bound_to$_t_uint216_$",
                              "typeString": "function (uint216,uint216) pure returns (uint256)"
                            }
                          },
                          "id": 13245,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13397:43:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 13246,
                          "name": "limitExponent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13171,
                          "src": "13473:13:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13247,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13088,
                            "src": "13519:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 13249,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "35",
                            "id": 13248,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13527:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_5_by_1",
                              "typeString": "int_const 5"
                            },
                            "value": "5"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13519:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13250,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13088,
                            "src": "13563:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 13252,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "36",
                            "id": 13251,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13571:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_6_by_1",
                              "typeString": "int_const 6"
                            },
                            "value": "6"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13563:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13253,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13088,
                            "src": "13613:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 13255,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "37",
                            "id": 13254,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13621:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_7_by_1",
                              "typeString": "int_const 7"
                            },
                            "value": "7"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13613:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13256,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13088,
                            "src": "13654:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 13258,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "38",
                            "id": 13257,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13662:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_8_by_1",
                              "typeString": "int_const 8"
                            },
                            "value": "8"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13654:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13259,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13088,
                            "src": "13693:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 13261,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "39",
                            "id": 13260,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13701:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_9_by_1",
                              "typeString": "int_const 9"
                            },
                            "value": "9"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13693:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13262,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13088,
                            "src": "13732:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                              "typeString": "uint256[11] calldata"
                            }
                          },
                          "id": 13264,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "3130",
                            "id": 13263,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13740:2:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_10_by_1",
                              "typeString": "int_const 10"
                            },
                            "value": "10"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13732:11:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 13265,
                          "name": "_voteOnBehalf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13090,
                          "src": "13770:13:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 13223,
                        "name": "Parameters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12548,
                        "src": "13157:10:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Parameters_$12548_storage_ptr_$",
                          "typeString": "type(struct GenesisProtocolLogic.Parameters storage pointer)"
                        }
                      },
                      "id": 13266,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [
                        "queuedVoteRequiredPercentage",
                        "queuedVotePeriodLimit",
                        "boostedVotePeriodLimit",
                        "preBoostedVotePeriodLimit",
                        "thresholdConst",
                        "limitExponentValue",
                        "quietEndingPeriod",
                        "proposingRepReward",
                        "votersReputationLossRatio",
                        "minimumDaoBounty",
                        "daoBountyConst",
                        "activationTime",
                        "voteOnBehalf"
                      ],
                      "nodeType": "FunctionCall",
                      "src": "13157:637:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$12548_memory",
                        "typeString": "struct GenesisProtocolLogic.Parameters memory"
                      }
                    },
                    "src": "13132:662:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Parameters_$12548_storage",
                      "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                    }
                  },
                  "id": 13268,
                  "nodeType": "ExpressionStatement",
                  "src": "13132:662:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 13269,
                    "name": "paramsHash",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13164,
                    "src": "13811:10:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 13094,
                  "id": 13270,
                  "nodeType": "Return",
                  "src": "13804:17:57"
                }
              ]
            },
            "documentation": "@dev hash the parameters, save them if necessary, and return the hash value\n@param _params a parameters array\n   _params[0] - _queuedVoteRequiredPercentage,\n   _params[1] - _queuedVotePeriodLimit, //the time limit for a proposal to be in an absolute voting mode.\n   _params[2] - _boostedVotePeriodLimit, //the time limit for a proposal to be in an relative voting mode.\n   _params[3] - _preBoostedVotePeriodLimit, //the time limit for a proposal to be in an preparation\n                 state (stable) before boosted.\n   _params[4] -_thresholdConst\n   _params[5] -_quietEndingPeriod\n   _params[6] -_proposingRepReward\n   _params[7] -_votersReputationLossRatio\n   _params[8] -_minimumDaoBounty\n   _params[9] -_daoBountyConst\n   _params[10] -_activationTime\n@param _voteOnBehalf - authorized to vote on behalf of others.",
            "id": 13272,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setParameters",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13091,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13088,
                  "name": "_params",
                  "nodeType": "VariableDeclaration",
                  "scope": 13272,
                  "src": "12031:25:57",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$11_calldata_ptr",
                    "typeString": "uint256[11]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 13085,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "12031:4:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 13087,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "3131",
                      "id": 13086,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12036:2:57",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "11"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "12031:8:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$11_storage_ptr",
                      "typeString": "uint256[11]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13090,
                  "name": "_voteOnBehalf",
                  "nodeType": "VariableDeclaration",
                  "scope": 13272,
                  "src": "12112:21:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13089,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12112:7:57",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12021:118:57"
            },
            "returnParameters": {
              "id": 13094,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13093,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 13272,
                  "src": "12165:7:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13092,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "12165:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12164:9:57"
            },
            "scope": 15047,
            "src": "11999:1829:57",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 13731,
              "nodeType": "Block",
              "src": "14486:3933:57",
              "statements": [
                {
                  "assignments": [
                    13284
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13284,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 13731,
                      "src": "14496:25:57",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 13283,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12613,
                        "src": "14496:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13288,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 13285,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12689,
                      "src": "14524:9:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$12613_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                      }
                    },
                    "id": 13287,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 13286,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13274,
                      "src": "14534:11:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "14524:22:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$12613_storage",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14496:50:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 13302,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_ProposalState_$12514",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              },
                              "id": 13294,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13290,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13284,
                                  "src": "14565:8:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 13291,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "state",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12568,
                                "src": "14565:14:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$12514",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13292,
                                  "name": "ProposalState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12514,
                                  "src": "14583:13:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                    "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                  }
                                },
                                "id": 13293,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "Executed",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "14583:22:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$12514",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                }
                              },
                              "src": "14565:40:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 13295,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "14564:42:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_ProposalState_$12514",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              },
                              "id": 13300,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13296,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13284,
                                  "src": "14609:8:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 13297,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "state",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12568,
                                "src": "14609:14:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$12514",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13298,
                                  "name": "ProposalState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12514,
                                  "src": "14627:13:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                    "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                  }
                                },
                                "id": 13299,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "ExpiredInQueue",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "14627:28:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$12514",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                }
                              },
                              "src": "14609:46:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 13301,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "14608:48:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "14564:92:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "50726f706f73616c2073686f756c64206265204578656375746564206f722045787069726564496e5175657565",
                        "id": 13303,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14666:47:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_4e192fc0c0c06bbf22b55d1039c663d5c5a02b944d66c77797d07c1d4ad01bb5",
                          "typeString": "literal_string \"Proposal should be Executed or ExpiredInQueue\""
                        },
                        "value": "Proposal should be Executed or ExpiredInQueue"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_4e192fc0c0c06bbf22b55d1039c663d5c5a02b944d66c77797d07c1d4ad01bb5",
                          "typeString": "literal_string \"Proposal should be Executed or ExpiredInQueue\""
                        }
                      ],
                      "id": 13289,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "14556:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 13304,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14556:158:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13305,
                  "nodeType": "ExpressionStatement",
                  "src": "14556:158:57"
                },
                {
                  "assignments": [
                    13307
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13307,
                      "name": "params",
                      "nodeType": "VariableDeclaration",
                      "scope": 13731,
                      "src": "14724:24:57",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$12548_memory_ptr",
                        "typeString": "struct GenesisProtocolLogic.Parameters"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 13306,
                        "name": "Parameters",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12548,
                        "src": "14724:10:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$12548_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Parameters"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13312,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 13308,
                      "name": "parameters",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12685,
                      "src": "14751:10:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$12548_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                      }
                    },
                    "id": 13311,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13309,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13284,
                        "src": "14762:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 13310,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "paramsHash",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12576,
                      "src": "14762:19:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "14751:31:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Parameters_$12548_storage",
                      "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14724:58:57"
                },
                {
                  "assignments": [
                    13314
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13314,
                      "name": "lostReputation",
                      "nodeType": "VariableDeclaration",
                      "scope": 13731,
                      "src": "14792:22:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 13313,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "14792:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13315,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14792:22:57"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 13319,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13316,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13284,
                        "src": "14828:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 13317,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "winningVote",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12570,
                      "src": "14828:20:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 13318,
                      "name": "YES",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12710,
                      "src": "14852:3:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14828:27:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 13335,
                    "nodeType": "Block",
                    "src": "14933:71:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13333,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 13328,
                            "name": "lostReputation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13314,
                            "src": "14947:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13329,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13284,
                                "src": "14964:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 13330,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "preBoostedVotes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12600,
                              "src": "14964:24:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 13332,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 13331,
                              "name": "YES",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12710,
                              "src": "14989:3:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "14964:29:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14947:46:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13334,
                        "nodeType": "ExpressionStatement",
                        "src": "14947:46:57"
                      }
                    ]
                  },
                  "id": 13336,
                  "nodeType": "IfStatement",
                  "src": "14824:180:57",
                  "trueBody": {
                    "id": 13327,
                    "nodeType": "Block",
                    "src": "14857:70:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13325,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 13320,
                            "name": "lostReputation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13314,
                            "src": "14871:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13321,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13284,
                                "src": "14888:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 13322,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "preBoostedVotes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12600,
                              "src": "14888:24:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 13324,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 13323,
                              "name": "NO",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12707,
                              "src": "14913:2:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "14888:28:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14871:45:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13326,
                        "nodeType": "ExpressionStatement",
                        "src": "14871:45:57"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 13346,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 13337,
                      "name": "lostReputation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13314,
                      "src": "15013:14:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 13345,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13340,
                                  "name": "params",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13307,
                                  "src": "15050:6:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Parameters_$12548_memory_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Parameters memory"
                                  }
                                },
                                "id": 13341,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "votersReputationLossRatio",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12539,
                                "src": "15050:32:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 13338,
                                "name": "lostReputation",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13314,
                                "src": "15031:14:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 13339,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15826,
                              "src": "15031:18:57",
                              "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": 13342,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15031:52:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 13343,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "15030:54:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "/",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "313030",
                        "id": 13344,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15085:3:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_100_by_1",
                          "typeString": "int_const 100"
                        },
                        "value": "100"
                      },
                      "src": "15030:58:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "15013:75:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 13347,
                  "nodeType": "ExpressionStatement",
                  "src": "15013:75:57"
                },
                {
                  "assignments": [
                    13349
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13349,
                      "name": "staker",
                      "nodeType": "VariableDeclaration",
                      "scope": 13731,
                      "src": "15118:21:57",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Staker"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 13348,
                        "name": "Staker",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12562,
                        "src": "15118:6:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Staker"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13354,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13350,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13284,
                        "src": "15142:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 13351,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "stakers",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12612,
                      "src": "15142:16:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$12562_storage_$",
                        "typeString": "mapping(address => struct GenesisProtocolLogic.Staker storage ref)"
                      }
                    },
                    "id": 13353,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 13352,
                      "name": "_beneficiary",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13276,
                      "src": "15159:12:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "15142:30:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Staker_$12562_storage",
                      "typeString": "struct GenesisProtocolLogic.Staker storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15118:54:57"
                },
                {
                  "assignments": [
                    13356
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13356,
                      "name": "totalStakes",
                      "nodeType": "VariableDeclaration",
                      "scope": 13731,
                      "src": "15182:19:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 13355,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "15182:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13367,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 13362,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13284,
                            "src": "15228:8:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                            }
                          },
                          "id": 13363,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "stakes",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12608,
                          "src": "15228:15:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                            "typeString": "mapping(uint256 => uint256)"
                          }
                        },
                        "id": 13365,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 13364,
                          "name": "YES",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12710,
                          "src": "15244:3:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "15228:20:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 13357,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13284,
                            "src": "15204:8:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                            }
                          },
                          "id": 13358,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "stakes",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12608,
                          "src": "15204:15:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                            "typeString": "mapping(uint256 => uint256)"
                          }
                        },
                        "id": 13360,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 13359,
                          "name": "NO",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12707,
                          "src": "15220:2:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "15204:19:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 13361,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "add",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15898,
                      "src": "15204:23:57",
                      "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": 13366,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15204:45:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15182:67:57"
                },
                {
                  "assignments": [
                    13369
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13369,
                      "name": "totalWinningStakes",
                      "nodeType": "VariableDeclaration",
                      "scope": 13731,
                      "src": "15259:26:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 13368,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "15259:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13375,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13370,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13284,
                        "src": "15288:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 13371,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "stakes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12608,
                      "src": "15288:15:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                        "typeString": "mapping(uint256 => uint256)"
                      }
                    },
                    "id": 13374,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13372,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13284,
                        "src": "15304:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 13373,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "winningVote",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12570,
                      "src": "15304:20:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "15288:37:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15259:66:57"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 13379,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13376,
                        "name": "staker",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13349,
                        "src": "15340:6:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                        }
                      },
                      "id": 13377,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "amount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12559,
                      "src": "15340:13:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 13378,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "15356:1:57",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "15340:17:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 13472,
                  "nodeType": "IfStatement",
                  "src": "15336:980:57",
                  "trueBody": {
                    "id": 13471,
                    "nodeType": "Block",
                    "src": "15359:957:57",
                    "statements": [
                      {
                        "assignments": [
                          13381
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13381,
                            "name": "totalStakesLeftAfterCallBounty",
                            "nodeType": "VariableDeclaration",
                            "scope": 13471,
                            "src": "15373:38:57",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 13380,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15373:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 13396,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "313030",
                                  "id": 13393,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15512:3:57",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_100_by_1",
                                    "typeString": "int_const 100"
                                  },
                                  "value": "100"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_100_by_1",
                                    "typeString": "int_const 100"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 13387,
                                          "name": "proposal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13284,
                                          "src": "15486:8:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                          }
                                        },
                                        "id": 13388,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "stakes",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 12608,
                                        "src": "15486:15:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                          "typeString": "mapping(uint256 => uint256)"
                                        }
                                      },
                                      "id": 13390,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 13389,
                                        "name": "YES",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12710,
                                        "src": "15502:3:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "15486:20:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 13384,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13284,
                                        "src": "15442:8:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                        }
                                      },
                                      "id": 13385,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "expirationCallBountyPercentage",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 12586,
                                      "src": "15442:39:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 13386,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 15826,
                                    "src": "15442:43:57",
                                    "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": 13391,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "15442:65:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 13392,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "div",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 15850,
                                "src": "15442:69:57",
                                "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": 13394,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15442:74:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 13382,
                              "name": "totalStakes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13356,
                              "src": "15426:11:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 13383,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15874,
                            "src": "15426:15:57",
                            "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": 13395,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15426:91:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15373:144:57"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$12514",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 13401,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13397,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13284,
                              "src": "15535:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 13398,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12568,
                            "src": "15535:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13399,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12514,
                              "src": "15553:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 13400,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "ExpiredInQueue",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "15553:28:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "15535:46:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 13414,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13410,
                                "name": "staker",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13349,
                                "src": "15738:6:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                                }
                              },
                              "id": 13411,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "vote",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12557,
                              "src": "15738:11:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13412,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13284,
                                "src": "15753:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 13413,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "winningVote",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12570,
                              "src": "15753:20:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "15738:35:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": null,
                          "id": 13463,
                          "nodeType": "IfStatement",
                          "src": "15734:541:57",
                          "trueBody": {
                            "id": 13462,
                            "nodeType": "Block",
                            "src": "15775:500:57",
                            "statements": [
                              {
                                "condition": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 13418,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 13415,
                                      "name": "staker",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13349,
                                      "src": "15797:6:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                                      }
                                    },
                                    "id": 13416,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "vote",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12557,
                                    "src": "15797:11:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 13417,
                                    "name": "YES",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12710,
                                    "src": "15812:3:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "15797:18:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "id": 13460,
                                  "nodeType": "Block",
                                  "src": "16137:124:57",
                                  "statements": [
                                    {
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 13458,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 13447,
                                            "name": "rewards",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 13281,
                                            "src": "16159:7:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                              "typeString": "uint256[3] memory"
                                            }
                                          },
                                          "id": 13449,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 13448,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "16167:1:57",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": true,
                                          "nodeType": "IndexAccess",
                                          "src": "16159:10:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 13457,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "components": [
                                              {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 13453,
                                                    "name": "totalStakesLeftAfterCallBounty",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 13381,
                                                    "src": "16191:30:57",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "id": 13450,
                                                      "name": "staker",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 13349,
                                                      "src": "16173:6:57",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                                                        "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                                                      }
                                                    },
                                                    "id": 13451,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "amount",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 12559,
                                                    "src": "16173:13:57",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 13452,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "mul",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 15826,
                                                  "src": "16173:17:57",
                                                  "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": 13454,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "16173:49:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "id": 13455,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "16172:51:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "/",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 13456,
                                            "name": "totalWinningStakes",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 13369,
                                            "src": "16224:18:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "16172:70:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "16159:83:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 13459,
                                      "nodeType": "ExpressionStatement",
                                      "src": "16159:83:57"
                                    }
                                  ]
                                },
                                "id": 13461,
                                "nodeType": "IfStatement",
                                "src": "15793:468:57",
                                "trueBody": {
                                  "id": 13446,
                                  "nodeType": "Block",
                                  "src": "15817:314:57",
                                  "statements": [
                                    {
                                      "condition": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 13422,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 13419,
                                            "name": "proposal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 13284,
                                            "src": "15843:8:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                            }
                                          },
                                          "id": 13420,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "daoBounty",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 12580,
                                          "src": "15843:18:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 13421,
                                          "name": "totalStakesLeftAfterCallBounty",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13381,
                                          "src": "15864:30:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "15843:51:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "falseBody": null,
                                      "id": 13445,
                                      "nodeType": "IfStatement",
                                      "src": "15839:274:57",
                                      "trueBody": {
                                        "id": 13444,
                                        "nodeType": "Block",
                                        "src": "15896:217:57",
                                        "statements": [
                                          {
                                            "assignments": [
                                              13424
                                            ],
                                            "declarations": [
                                              {
                                                "constant": false,
                                                "id": 13424,
                                                "name": "_totalStakes",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 13444,
                                                "src": "15922:20:57",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "typeName": {
                                                  "id": 13423,
                                                  "name": "uint256",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "15922:7:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "value": null,
                                                "visibility": "internal"
                                              }
                                            ],
                                            "id": 13430,
                                            "initialValue": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 13427,
                                                    "name": "proposal",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 13284,
                                                    "src": "15980:8:57",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                      "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                    }
                                                  },
                                                  "id": 13428,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "daoBounty",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 12580,
                                                  "src": "15980:18:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 13425,
                                                  "name": "totalStakesLeftAfterCallBounty",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 13381,
                                                  "src": "15945:30:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 13426,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sub",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 15874,
                                                "src": "15945:34:57",
                                                "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": 13429,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "15945:54:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "VariableDeclarationStatement",
                                            "src": "15922:77:57"
                                          },
                                          {
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 13442,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "argumentTypes": null,
                                                "baseExpression": {
                                                  "argumentTypes": null,
                                                  "id": 13431,
                                                  "name": "rewards",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 13281,
                                                  "src": "16025:7:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                                    "typeString": "uint256[3] memory"
                                                  }
                                                },
                                                "id": 13433,
                                                "indexExpression": {
                                                  "argumentTypes": null,
                                                  "hexValue": "30",
                                                  "id": 13432,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "16033:1:57",
                                                  "subdenomination": null,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                  },
                                                  "value": "0"
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": true,
                                                "nodeType": "IndexAccess",
                                                "src": "16025:10:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "argumentTypes": null,
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 13441,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "argumentTypes": null,
                                                  "components": [
                                                    {
                                                      "argumentTypes": null,
                                                      "arguments": [
                                                        {
                                                          "argumentTypes": null,
                                                          "id": 13437,
                                                          "name": "_totalStakes",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 13424,
                                                          "src": "16057:12:57",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": [
                                                          {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        ],
                                                        "expression": {
                                                          "argumentTypes": null,
                                                          "expression": {
                                                            "argumentTypes": null,
                                                            "id": 13434,
                                                            "name": "staker",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 13349,
                                                            "src": "16039:6:57",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                                                              "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                                                            }
                                                          },
                                                          "id": 13435,
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "memberName": "amount",
                                                          "nodeType": "MemberAccess",
                                                          "referencedDeclaration": 12559,
                                                          "src": "16039:13:57",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "id": 13436,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "mul",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 15826,
                                                        "src": "16039:17:57",
                                                        "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": 13438,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "kind": "functionCall",
                                                      "lValueRequested": false,
                                                      "names": [],
                                                      "nodeType": "FunctionCall",
                                                      "src": "16039:31:57",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    }
                                                  ],
                                                  "id": 13439,
                                                  "isConstant": false,
                                                  "isInlineArray": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "TupleExpression",
                                                  "src": "16038:33:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "/",
                                                "rightExpression": {
                                                  "argumentTypes": null,
                                                  "id": 13440,
                                                  "name": "totalWinningStakes",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 13369,
                                                  "src": "16072:18:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "src": "16038:52:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "16025:65:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 13443,
                                            "nodeType": "ExpressionStatement",
                                            "src": "16025:65:57"
                                          }
                                        ]
                                      }
                                    }
                                  ]
                                }
                              }
                            ]
                          }
                        },
                        "id": 13464,
                        "nodeType": "IfStatement",
                        "src": "15531:744:57",
                        "trueBody": {
                          "id": 13409,
                          "nodeType": "Block",
                          "src": "15583:145:57",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 13407,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 13402,
                                    "name": "rewards",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13281,
                                    "src": "15687:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                      "typeString": "uint256[3] memory"
                                    }
                                  },
                                  "id": 13404,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 13403,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15695:1:57",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "15687:10:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 13405,
                                    "name": "staker",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13349,
                                    "src": "15700:6:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                                    }
                                  },
                                  "id": 13406,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "amount",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12559,
                                  "src": "15700:13:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "15687:26:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 13408,
                              "nodeType": "ExpressionStatement",
                              "src": "15687:26:57"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13469,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13465,
                              "name": "staker",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13349,
                              "src": "16288:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                              }
                            },
                            "id": 13467,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12559,
                            "src": "16288:13:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 13468,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16304:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "16288:17:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13470,
                        "nodeType": "ExpressionStatement",
                        "src": "16288:17:57"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 13494,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 13489,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 13483,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 13476,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13473,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13284,
                              "src": "16367:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 13474,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "daoRedeemItsWinnings",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12592,
                            "src": "16367:29:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 13475,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16400:5:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "16367:38:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 13482,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 13477,
                            "name": "_beneficiary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13276,
                            "src": "16421:12:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 13478,
                              "name": "organizations",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12697,
                              "src": "16437:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                "typeString": "mapping(bytes32 => address)"
                              }
                            },
                            "id": 13481,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13479,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13284,
                                "src": "16451:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 13480,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "organizationId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12564,
                              "src": "16451:23:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "16437:38:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "16421:54:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "16367:108:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_ProposalState_$12514",
                          "typeString": "enum GenesisProtocolLogic.ProposalState"
                        },
                        "id": 13488,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 13484,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13284,
                            "src": "16491:8:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                            }
                          },
                          "id": 13485,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "state",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12568,
                          "src": "16491:14:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ProposalState_$12514",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 13486,
                            "name": "ProposalState",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12514,
                            "src": "16509:13:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                              "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                            }
                          },
                          "id": 13487,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "ExpiredInQueue",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "16509:28:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ProposalState_$12514",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          }
                        },
                        "src": "16491:46:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "16367:170:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 13493,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 13490,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13284,
                          "src": "16553:8:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                          }
                        },
                        "id": 13491,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "winningVote",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12570,
                        "src": "16553:20:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 13492,
                        "name": "NO",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12707,
                        "src": "16577:2:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "16553:26:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "16367:212:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 13524,
                  "nodeType": "IfStatement",
                  "src": "16363:414:57",
                  "trueBody": {
                    "id": 13523,
                    "nodeType": "Block",
                    "src": "16581:196:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13515,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 13495,
                              "name": "rewards",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13281,
                              "src": "16595:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                "typeString": "uint256[3] memory"
                              }
                            },
                            "id": 13497,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 13496,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16603:1:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "16595:10:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13512,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13284,
                                  "src": "16697:8:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 13513,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "daoBounty",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12580,
                                "src": "16697:18:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 13509,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 13505,
                                              "name": "totalStakes",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 13356,
                                              "src": "16659:11:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 13502,
                                                "name": "proposal",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 13284,
                                                "src": "16636:8:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                }
                                              },
                                              "id": 13503,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "daoBounty",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 12580,
                                              "src": "16636:18:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 13504,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "mul",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 15826,
                                            "src": "16636:22:57",
                                            "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": 13506,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "16636:35:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 13507,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "16635:37:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 13508,
                                      "name": "totalWinningStakes",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13369,
                                      "src": "16673:18:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "16635:56:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 13498,
                                      "name": "rewards",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13281,
                                      "src": "16620:7:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                        "typeString": "uint256[3] memory"
                                      }
                                    },
                                    "id": 13500,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 13499,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "16628:1:57",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "16620:10:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 13501,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 15898,
                                  "src": "16620:14:57",
                                  "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": 13510,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16620:72:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 13511,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15874,
                              "src": "16620:76:57",
                              "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": 13514,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16620:96:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16595:121:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13516,
                        "nodeType": "ExpressionStatement",
                        "src": "16595:121:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13521,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13517,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13284,
                              "src": "16730:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 13519,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "daoRedeemItsWinnings",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12592,
                            "src": "16730:29:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 13520,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16762:4:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "16730:36:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13522,
                        "nodeType": "ExpressionStatement",
                        "src": "16730:36:57"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    13526
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13526,
                      "name": "voter",
                      "nodeType": "VariableDeclaration",
                      "scope": 13731,
                      "src": "16806:19:57",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Voter_$12555_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Voter"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 13525,
                        "name": "Voter",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12555,
                        "src": "16806:5:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Voter_$12555_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Voter"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13531,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13527,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13284,
                        "src": "16828:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 13528,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "voters",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12604,
                      "src": "16828:15:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$12555_storage_$",
                        "typeString": "mapping(address => struct GenesisProtocolLogic.Voter storage ref)"
                      }
                    },
                    "id": 13530,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 13529,
                      "name": "_beneficiary",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13276,
                      "src": "16844:12:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "16828:29:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Voter_$12555_storage",
                      "typeString": "struct GenesisProtocolLogic.Voter storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16806:51:57"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 13540,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13535,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13532,
                              "name": "voter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13526,
                              "src": "16872:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Voter_$12555_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Voter storage pointer"
                              }
                            },
                            "id": 13533,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "reputation",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12552,
                            "src": "16872:16:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 13534,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16892:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "16872:21:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 13536,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "16871:23:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 13537,
                            "name": "voter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13526,
                            "src": "16899:5:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Voter_$12555_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Voter storage pointer"
                            }
                          },
                          "id": 13538,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "preBoosted",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12554,
                          "src": "16899:16:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 13539,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "16898:18:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "16871:45:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 13606,
                  "nodeType": "IfStatement",
                  "src": "16867:582:57",
                  "trueBody": {
                    "id": 13605,
                    "nodeType": "Block",
                    "src": "16918:531:57",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$12514",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 13545,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13541,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13284,
                              "src": "16936:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 13542,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12568,
                            "src": "16936:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13543,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12514,
                              "src": "16954:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 13544,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "ExpiredInQueue",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "16954:28:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "16936:46:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 13566,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13562,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13284,
                                "src": "17153:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 13563,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "winningVote",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12570,
                              "src": "17153:20:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13564,
                                "name": "voter",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13526,
                                "src": "17177:5:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Voter_$12555_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Voter storage pointer"
                                }
                              },
                              "id": 13565,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "vote",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12550,
                              "src": "17177:10:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "17153:34:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": null,
                          "id": 13597,
                          "nodeType": "IfStatement",
                          "src": "17149:256:57",
                          "trueBody": {
                            "id": 13596,
                            "nodeType": "Block",
                            "src": "17189:216:57",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13594,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 13567,
                                      "name": "rewards",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13281,
                                      "src": "17207:7:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                        "typeString": "uint256[3] memory"
                                      }
                                    },
                                    "id": 13569,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 13568,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "17215:1:57",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": true,
                                    "nodeType": "IndexAccess",
                                    "src": "17207:10:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 13592,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "components": [
                                            {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 13584,
                                                  "name": "lostReputation",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 13314,
                                                  "src": "17326:14:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 13581,
                                                    "name": "voter",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 13526,
                                                    "src": "17305:5:57",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_Voter_$12555_storage_ptr",
                                                      "typeString": "struct GenesisProtocolLogic.Voter storage pointer"
                                                    }
                                                  },
                                                  "id": 13582,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "reputation",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 12552,
                                                  "src": "17305:16:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 13583,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "mul",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 15826,
                                                "src": "17305:20:57",
                                                "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": 13585,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "17305:36:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 13586,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "17304:38:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "/",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 13587,
                                              "name": "proposal",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 13284,
                                              "src": "17343:8:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                              }
                                            },
                                            "id": 13588,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "preBoostedVotes",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 12600,
                                            "src": "17343:24:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                              "typeString": "mapping(uint256 => uint256)"
                                            }
                                          },
                                          "id": 13591,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 13589,
                                              "name": "proposal",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 13284,
                                              "src": "17368:8:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                              }
                                            },
                                            "id": 13590,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "winningVote",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 12570,
                                            "src": "17368:20:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "17343:46:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "17304:85:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 13578,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "components": [
                                                {
                                                  "argumentTypes": null,
                                                  "arguments": [
                                                    {
                                                      "argumentTypes": null,
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "id": 13573,
                                                        "name": "params",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 13307,
                                                        "src": "17243:6:57",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_Parameters_$12548_memory_ptr",
                                                          "typeString": "struct GenesisProtocolLogic.Parameters memory"
                                                        }
                                                      },
                                                      "id": 13574,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "votersReputationLossRatio",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 12539,
                                                      "src": "17243:32:57",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "id": 13570,
                                                        "name": "voter",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 13526,
                                                        "src": "17222:5:57",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_Voter_$12555_storage_ptr",
                                                          "typeString": "struct GenesisProtocolLogic.Voter storage pointer"
                                                        }
                                                      },
                                                      "id": 13571,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "reputation",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 12552,
                                                      "src": "17222:16:57",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "id": 13572,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "mul",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 15826,
                                                    "src": "17222:20:57",
                                                    "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": 13575,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "functionCall",
                                                  "lValueRequested": false,
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "17222:54:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "id": 13576,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "TupleExpression",
                                              "src": "17221:56:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "/",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "313030",
                                              "id": 13577,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "17278:3:57",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_100_by_1",
                                                "typeString": "int_const 100"
                                              },
                                              "value": "100"
                                            },
                                            "src": "17221:60:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 13579,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "17220:62:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 13580,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "add",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 15898,
                                      "src": "17220:83:57",
                                      "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": 13593,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "17220:170:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "17207:183:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 13595,
                                "nodeType": "ExpressionStatement",
                                "src": "17207:183:57"
                              }
                            ]
                          }
                        },
                        "id": 13598,
                        "nodeType": "IfStatement",
                        "src": "16932:473:57",
                        "trueBody": {
                          "id": 13561,
                          "nodeType": "Block",
                          "src": "16984:159:57",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 13559,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 13546,
                                    "name": "rewards",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13281,
                                    "src": "17053:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                      "typeString": "uint256[3] memory"
                                    }
                                  },
                                  "id": 13548,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 13547,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "17061:1:57",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "17053:10:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 13557,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 13552,
                                                  "name": "params",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 13307,
                                                  "src": "17089:6:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Parameters_$12548_memory_ptr",
                                                    "typeString": "struct GenesisProtocolLogic.Parameters memory"
                                                  }
                                                },
                                                "id": 13553,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "votersReputationLossRatio",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 12539,
                                                "src": "17089:32:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 13549,
                                                  "name": "voter",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 13526,
                                                  "src": "17068:5:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Voter_$12555_storage_ptr",
                                                    "typeString": "struct GenesisProtocolLogic.Voter storage pointer"
                                                  }
                                                },
                                                "id": 13550,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "reputation",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 12552,
                                                "src": "17068:16:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 13551,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "mul",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 15826,
                                              "src": "17068:20:57",
                                              "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": 13554,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "17068:54:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 13555,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "17067:56:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "313030",
                                        "id": 13556,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "17124:3:57",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_100_by_1",
                                          "typeString": "int_const 100"
                                        },
                                        "value": "100"
                                      },
                                      "src": "17067:60:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 13558,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "17066:62:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "17053:75:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 13560,
                              "nodeType": "ExpressionStatement",
                              "src": "17053:75:57"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13603,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13599,
                              "name": "voter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13526,
                              "src": "17418:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Voter_$12555_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Voter storage pointer"
                              }
                            },
                            "id": 13601,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "reputation",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12552,
                            "src": "17418:16:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 13602,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17437:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "17418:20:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13604,
                        "nodeType": "ExpressionStatement",
                        "src": "17418:20:57"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 13625,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 13617,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 13610,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13607,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13284,
                                "src": "17485:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 13608,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "proposer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12572,
                              "src": "17485:17:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 13609,
                              "name": "_beneficiary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13276,
                              "src": "17506:12:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "17485:33:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "id": 13611,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "17484:35:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 13615,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13612,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13284,
                                "src": "17522:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 13613,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "winningVote",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12570,
                              "src": "17522:20:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 13614,
                              "name": "YES",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12710,
                              "src": "17546:3:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "17522:27:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "id": 13616,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "17521:29:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "17484:66:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 13623,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13618,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13284,
                              "src": "17553:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 13619,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "proposer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12572,
                            "src": "17553:17:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 13621,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17582:1:57",
                                "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": 13620,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "17574:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 13622,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17574:10:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "17553:31:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 13624,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "17552:33:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "17484:101:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 13642,
                  "nodeType": "IfStatement",
                  "src": "17480:214:57",
                  "trueBody": {
                    "id": 13641,
                    "nodeType": "Block",
                    "src": "17587:107:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13631,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 13626,
                              "name": "rewards",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13281,
                              "src": "17601:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                "typeString": "uint256[3] memory"
                              }
                            },
                            "id": 13628,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 13627,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17609:1:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "17601:10:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13629,
                              "name": "params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13307,
                              "src": "17614:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Parameters_$12548_memory_ptr",
                                "typeString": "struct GenesisProtocolLogic.Parameters memory"
                              }
                            },
                            "id": 13630,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "proposingRepReward",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12537,
                            "src": "17614:25:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17601:38:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13632,
                        "nodeType": "ExpressionStatement",
                        "src": "17601:38:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13639,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13633,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13284,
                              "src": "17653:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 13635,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "proposer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12572,
                            "src": "17653:17:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 13637,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17681:1:57",
                                "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": 13636,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "17673:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 13638,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17673:10:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "17653:30:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 13640,
                        "nodeType": "ExpressionStatement",
                        "src": "17653:30:57"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 13647,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 13643,
                        "name": "rewards",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13281,
                        "src": "17707:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                          "typeString": "uint256[3] memory"
                        }
                      },
                      "id": 13645,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 13644,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "17715:1:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "17707:10:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 13646,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "17721:1:57",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "17707:15:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 13684,
                  "nodeType": "IfStatement",
                  "src": "17703:313:57",
                  "trueBody": {
                    "id": 13683,
                    "nodeType": "Block",
                    "src": "17724:292:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13658,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13648,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13284,
                              "src": "17738:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 13650,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "totalStakes",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12582,
                            "src": "17738:20:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 13654,
                                  "name": "rewards",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13281,
                                  "src": "17786:7:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                    "typeString": "uint256[3] memory"
                                  }
                                },
                                "id": 13656,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 13655,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "17794:1:57",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "17786:10:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13651,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13284,
                                  "src": "17761:8:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 13652,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "totalStakes",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12582,
                                "src": "17761:20:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 13653,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15874,
                              "src": "17761:24:57",
                              "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": 13657,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17761:36:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17738:59:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13659,
                        "nodeType": "ExpressionStatement",
                        "src": "17738:59:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 13663,
                                  "name": "_beneficiary",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13276,
                                  "src": "17841:12:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 13664,
                                    "name": "rewards",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13281,
                                    "src": "17855:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                      "typeString": "uint256[3] memory"
                                    }
                                  },
                                  "id": 13666,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 13665,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "17863:1:57",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "17855:10:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13661,
                                  "name": "stakingToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12714,
                                  "src": "17819:12:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$16748",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 13662,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "transfer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 16690,
                                "src": "17819:21:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,uint256) external returns (bool)"
                                }
                              },
                              "id": 13667,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17819:47:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "7472616e7366657220746f2062656e6566696369617279206661696c6564",
                              "id": 13668,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17868:32:57",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_01f9c28ec45391324b198ba689dab8ac93829b0379c464b3a8745b9a5d1be004",
                                "typeString": "literal_string \"transfer to beneficiary failed\""
                              },
                              "value": "transfer to beneficiary failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_01f9c28ec45391324b198ba689dab8ac93829b0379c464b3a8745b9a5d1be004",
                                "typeString": "literal_string \"transfer to beneficiary failed\""
                              }
                            ],
                            "id": 13660,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              16785,
                              16786
                            ],
                            "referencedDeclaration": 16786,
                            "src": "17811:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 13669,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17811:90:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13670,
                        "nodeType": "ExpressionStatement",
                        "src": "17811:90:57"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 13672,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13274,
                              "src": "17927:11:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 13673,
                                "name": "organizations",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12697,
                                "src": "17940:13:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                  "typeString": "mapping(bytes32 => address)"
                                }
                              },
                              "id": 13676,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13674,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13284,
                                  "src": "17954:8:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 13675,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "organizationId",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12564,
                                "src": "17954:23:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "17940:38:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13677,
                              "name": "_beneficiary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13276,
                              "src": "17980:12:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 13678,
                                "name": "rewards",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13281,
                                "src": "17994:7:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                  "typeString": "uint256[3] memory"
                                }
                              },
                              "id": 13680,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 13679,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "18002:1:57",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "17994:10:57",
                              "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"
                              }
                            ],
                            "id": 13671,
                            "name": "Redeem",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12635,
                            "src": "17920:6:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,address,address,uint256)"
                            }
                          },
                          "id": 13681,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17920:85:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13682,
                        "nodeType": "EmitStatement",
                        "src": "17915:90:57"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 13694,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13689,
                            "name": "rewards",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13281,
                            "src": "18044:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                              "typeString": "uint256[3] memory"
                            }
                          },
                          "id": 13691,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 13690,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "18052:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "18044:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 13685,
                            "name": "rewards",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13281,
                            "src": "18029:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                              "typeString": "uint256[3] memory"
                            }
                          },
                          "id": 13687,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 13686,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "18037:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "18029:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13688,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 15898,
                        "src": "18029:14:57",
                        "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": 13692,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "18029:26:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 13693,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "18059:1:57",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "18029:31:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 13730,
                  "nodeType": "IfStatement",
                  "src": "18025:388:57",
                  "trueBody": {
                    "id": 13729,
                    "nodeType": "Block",
                    "src": "18062:351:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 13704,
                                    "name": "rewards",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13281,
                                    "src": "18171:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                      "typeString": "uint256[3] memory"
                                    }
                                  },
                                  "id": 13706,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 13705,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18179:1:57",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "18171:10:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 13700,
                                    "name": "rewards",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13281,
                                    "src": "18156:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                      "typeString": "uint256[3] memory"
                                    }
                                  },
                                  "id": 13702,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 13701,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18164:1:57",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "18156:10:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 13703,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 15898,
                                "src": "18156:14:57",
                                "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": 13707,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18156:26:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13708,
                              "name": "_beneficiary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13276,
                              "src": "18184:12:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13709,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13274,
                              "src": "18198:11:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 13696,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13284,
                                    "src": "18108:8:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                    }
                                  },
                                  "id": 13697,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "callbacks",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12566,
                                  "src": "18108:18:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 13695,
                                "name": "VotingMachineCallbacksInterface",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15258,
                                "src": "18076:31:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_VotingMachineCallbacksInterface_$15258_$",
                                  "typeString": "type(contract VotingMachineCallbacksInterface)"
                                }
                              },
                              "id": 13698,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18076:51:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_VotingMachineCallbacksInterface_$15258",
                                "typeString": "contract VotingMachineCallbacksInterface"
                              }
                            },
                            "id": 13699,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mintReputation",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15208,
                            "src": "18076:79:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_bool_$",
                              "typeString": "function (uint256,address,bytes32) external returns (bool)"
                            }
                          },
                          "id": 13710,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18076:134:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13711,
                        "nodeType": "ExpressionStatement",
                        "src": "18076:134:57"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 13713,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13274,
                              "src": "18259:11:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 13714,
                                "name": "organizations",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12697,
                                "src": "18284:13:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                  "typeString": "mapping(bytes32 => address)"
                                }
                              },
                              "id": 13717,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13715,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13284,
                                  "src": "18298:8:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 13716,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "organizationId",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12564,
                                "src": "18298:23:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "18284:38:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13718,
                              "name": "_beneficiary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13276,
                              "src": "18336:12:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 13723,
                                    "name": "rewards",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13281,
                                    "src": "18377:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                      "typeString": "uint256[3] memory"
                                    }
                                  },
                                  "id": 13725,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 13724,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18385:1:57",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "18377:10:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 13719,
                                    "name": "rewards",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13281,
                                    "src": "18362:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                                      "typeString": "uint256[3] memory"
                                    }
                                  },
                                  "id": 13721,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 13720,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18370:1:57",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "18362:10:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 13722,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 15898,
                                "src": "18362:14:57",
                                "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": 13726,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18362:26:57",
                              "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"
                              }
                            ],
                            "id": 13712,
                            "name": "RedeemReputation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12655,
                            "src": "18229:16:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,address,address,uint256)"
                            }
                          },
                          "id": 13727,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18229:173:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13728,
                        "nodeType": "EmitStatement",
                        "src": "18224:178:57"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev redeem a reward for a successful stake, vote or proposing.\nThe function use a beneficiary address as a parameter (and not msg.sender) to enable\nusers to redeem on behalf of someone else.\n@param _proposalId the ID of the proposal\n@param _beneficiary - the beneficiary address\n@return rewards -\n          [0] stakerTokenReward\n          [1] voterReputationReward\n          [2] proposerReputationReward",
            "id": 13732,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "redeem",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13277,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13274,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 13732,
                  "src": "14403:19:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13273,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "14403:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13276,
                  "name": "_beneficiary",
                  "nodeType": "VariableDeclaration",
                  "scope": 13732,
                  "src": "14424:20:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13275,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14424:7:57",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14402:43:57"
            },
            "returnParameters": {
              "id": 13282,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13281,
                  "name": "rewards",
                  "nodeType": "VariableDeclaration",
                  "scope": 13732,
                  "src": "14462:22:57",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$3_memory_ptr",
                    "typeString": "uint256[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 13278,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "14462:4:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 13280,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "33",
                      "id": 13279,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "14467:1:57",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "14462:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$3_storage_ptr",
                      "typeString": "uint256[3]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14461:24:57"
            },
            "scope": 15047,
            "src": "14387:4032:57",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 13869,
              "nodeType": "Block",
              "src": "19056:1256:57",
              "statements": [
                {
                  "assignments": [
                    13744
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13744,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 13869,
                      "src": "19066:25:57",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 13743,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12613,
                        "src": "19066:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13748,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 13745,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12689,
                      "src": "19094:9:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$12613_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                      }
                    },
                    "id": 13747,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 13746,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13734,
                      "src": "19104:11:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "19094:22:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$12613_storage",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19066:50:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_ProposalState_$12514",
                          "typeString": "enum GenesisProtocolLogic.ProposalState"
                        },
                        "id": 13754,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 13750,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13744,
                            "src": "19134:8:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                            }
                          },
                          "id": 13751,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "state",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12568,
                          "src": "19134:14:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ProposalState_$12514",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 13752,
                            "name": "ProposalState",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12514,
                            "src": "19152:13:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                              "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                            }
                          },
                          "id": 13753,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "Executed",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "19152:22:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ProposalState_$12514",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          }
                        },
                        "src": "19134:40:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 13749,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16785,
                      "src": "19126:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 13755,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19126:49:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13756,
                  "nodeType": "ExpressionStatement",
                  "src": "19126:49:57"
                },
                {
                  "assignments": [
                    13758
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13758,
                      "name": "totalWinningStakes",
                      "nodeType": "VariableDeclaration",
                      "scope": 13869,
                      "src": "19185:26:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 13757,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "19185:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13764,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13759,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13744,
                        "src": "19214:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 13760,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "stakes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12608,
                      "src": "19214:15:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                        "typeString": "mapping(uint256 => uint256)"
                      }
                    },
                    "id": 13763,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13761,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13744,
                        "src": "19230:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 13762,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "winningVote",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12570,
                      "src": "19230:20:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "19214:37:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19185:66:57"
                },
                {
                  "assignments": [
                    13766
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13766,
                      "name": "staker",
                      "nodeType": "VariableDeclaration",
                      "scope": 13869,
                      "src": "19261:21:57",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Staker"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 13765,
                        "name": "Staker",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12562,
                        "src": "19261:6:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Staker"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13771,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13767,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13744,
                        "src": "19285:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 13768,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "stakers",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12612,
                      "src": "19285:16:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$12562_storage_$",
                        "typeString": "mapping(address => struct GenesisProtocolLogic.Staker storage ref)"
                      }
                    },
                    "id": 13770,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 13769,
                      "name": "_beneficiary",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13736,
                      "src": "19302:12:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "19285:30:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Staker_$12562_storage",
                      "typeString": "struct GenesisProtocolLogic.Staker storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19261:54:57"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 13794,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 13789,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 13783,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 13775,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13772,
                                  "name": "staker",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13766,
                                  "src": "19343:6:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                                  }
                                },
                                "id": 13773,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amount4Bounty",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12561,
                                "src": "19343:20:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 13774,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "19366:1:57",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "19343:24:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 13776,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "19342:26:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 13781,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13777,
                                  "name": "staker",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13766,
                                  "src": "19384:6:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                                  }
                                },
                                "id": 13778,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "vote",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12557,
                                "src": "19384:11:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13779,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13744,
                                  "src": "19399:8:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 13780,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "winningVote",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12570,
                                "src": "19399:20:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "19384:35:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 13782,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "19383:37:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "19342:78:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 13787,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13784,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13744,
                                "src": "19436:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 13785,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "winningVote",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12570,
                              "src": "19436:20:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 13786,
                              "name": "YES",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12710,
                              "src": "19460:3:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "19436:27:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "id": 13788,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "19435:29:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "19342:122:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13792,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 13790,
                            "name": "totalWinningStakes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13758,
                            "src": "19480:18:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 13791,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19502:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "19480:23:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 13793,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "19479:25:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "19342:162:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 13807,
                  "nodeType": "IfStatement",
                  "src": "19325:318:57",
                  "trueBody": {
                    "id": 13806,
                    "nodeType": "Block",
                    "src": "19506:137:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13804,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 13795,
                            "name": "potentialAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13741,
                            "src": "19548:15:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 13803,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 13800,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 13796,
                                      "name": "staker",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13766,
                                      "src": "19567:6:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                                      }
                                    },
                                    "id": 13797,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount4Bounty",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12561,
                                    "src": "19567:20:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 13798,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13744,
                                      "src": "19590:8:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                      }
                                    },
                                    "id": 13799,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "daoBounty",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12580,
                                    "src": "19590:18:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "19567:41:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 13801,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "19566:43:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 13802,
                              "name": "totalWinningStakes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13758,
                              "src": "19610:18:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "19566:62:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "19548:80:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13805,
                        "nodeType": "ExpressionStatement",
                        "src": "19548:80:57"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 13823,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13810,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 13808,
                            "name": "potentialAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13741,
                            "src": "19657:15:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 13809,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19676:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "19657:20:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 13811,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "19656:22:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13821,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 13817,
                                "name": "stakingToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12714,
                                "src": "19781:12:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$16748",
                                  "typeString": "contract IERC20"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 13818,
                                "name": "_proposalId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13734,
                                "src": "19795:11:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IERC20_$16748",
                                  "typeString": "contract IERC20"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 13813,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13744,
                                      "src": "19726:8:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                      }
                                    },
                                    "id": 13814,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "callbacks",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12566,
                                    "src": "19726:18:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 13812,
                                  "name": "VotingMachineCallbacksInterface",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15258,
                                  "src": "19694:31:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_VotingMachineCallbacksInterface_$15258_$",
                                    "typeString": "type(contract VotingMachineCallbacksInterface)"
                                  }
                                },
                                "id": 13815,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19694:51:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_VotingMachineCallbacksInterface_$15258",
                                  "typeString": "contract VotingMachineCallbacksInterface"
                                }
                              },
                              "id": 13816,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balanceOfStakingToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15257,
                              "src": "19694:86:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_contract$_IERC20_$16748_$_t_bytes32_$returns$_t_uint256_$",
                                "typeString": "function (contract IERC20,bytes32) view external returns (uint256)"
                              }
                            },
                            "id": 13819,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "19694:113:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 13820,
                            "name": "potentialAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13741,
                            "src": "19811:15:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "19694:132:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 13822,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "19693:134:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "19656:171:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 13868,
                  "nodeType": "IfStatement",
                  "src": "19652:654:57",
                  "trueBody": {
                    "id": 13867,
                    "nodeType": "Block",
                    "src": "19829:477:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13828,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13824,
                              "name": "staker",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13766,
                              "src": "19843:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                              }
                            },
                            "id": 13826,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount4Bounty",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12561,
                            "src": "19843:20:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 13827,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19866:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "19843:24:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13829,
                        "nodeType": "ExpressionStatement",
                        "src": "19843:24:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13838,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13830,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13744,
                              "src": "19881:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 13832,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "daoBountyRemain",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12578,
                            "src": "19881:24:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 13836,
                                "name": "potentialAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13741,
                                "src": "19937:15:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13833,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13744,
                                  "src": "19908:8:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 13834,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "daoBountyRemain",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12578,
                                "src": "19908:24:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 13835,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15874,
                              "src": "19908:28:57",
                              "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": 13837,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "19908:45:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "19881:72:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13839,
                        "nodeType": "ExpressionStatement",
                        "src": "19881:72:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 13846,
                                  "name": "stakingToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12714,
                                  "src": "20074:12:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$16748",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 13847,
                                  "name": "_beneficiary",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13736,
                                  "src": "20088:12:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 13848,
                                  "name": "potentialAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13741,
                                  "src": "20102:15:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 13849,
                                  "name": "_proposalId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13734,
                                  "src": "20119:11:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$16748",
                                    "typeString": "contract IERC20"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 13842,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13744,
                                        "src": "20020:8:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                        }
                                      },
                                      "id": 13843,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "callbacks",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 12566,
                                      "src": "20020:18:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 13841,
                                    "name": "VotingMachineCallbacksInterface",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15258,
                                    "src": "19988:31:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_VotingMachineCallbacksInterface_$15258_$",
                                      "typeString": "type(contract VotingMachineCallbacksInterface)"
                                    }
                                  },
                                  "id": 13844,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "19988:51:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_VotingMachineCallbacksInterface_$15258",
                                    "typeString": "contract VotingMachineCallbacksInterface"
                                  }
                                },
                                "id": 13845,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "stakingTokenTransfer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 15232,
                                "src": "19988:85:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20_$16748_$_t_address_$_t_uint256_$_t_bytes32_$returns$_t_bool_$",
                                  "typeString": "function (contract IERC20,address,uint256,bytes32) external returns (bool)"
                                }
                              },
                              "id": 13850,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19988:143:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 13840,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              16785,
                              16786
                            ],
                            "referencedDeclaration": 16785,
                            "src": "19967:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 13851,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19967:165:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13852,
                        "nodeType": "ExpressionStatement",
                        "src": "19967:165:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13855,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 13853,
                            "name": "redeemedAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13739,
                            "src": "20146:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 13854,
                            "name": "potentialAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13741,
                            "src": "20163:15:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "20146:32:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13856,
                        "nodeType": "ExpressionStatement",
                        "src": "20146:32:57"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 13858,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13734,
                              "src": "20213:11:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 13859,
                                "name": "organizations",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12697,
                                "src": "20226:13:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                  "typeString": "mapping(bytes32 => address)"
                                }
                              },
                              "id": 13862,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 13860,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13744,
                                  "src": "20240:8:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 13861,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "organizationId",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12564,
                                "src": "20240:23:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "20226:38:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13863,
                              "name": "_beneficiary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13736,
                              "src": "20266:12:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 13864,
                              "name": "redeemedAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13739,
                              "src": "20280:14:57",
                              "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"
                              }
                            ],
                            "id": 13857,
                            "name": "RedeemDaoBounty",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12645,
                            "src": "20197:15:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,address,address,uint256)"
                            }
                          },
                          "id": 13865,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20197:98:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13866,
                        "nodeType": "EmitStatement",
                        "src": "20192:103:57"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev redeemDaoBounty a reward for a successful stake.\nThe function use a beneficiary address as a parameter (and not msg.sender) to enable\nusers to redeem on behalf of someone else.\n@param _proposalId the ID of the proposal\n@param _beneficiary - the beneficiary address\n@return redeemedAmount - redeem token amount\n@return potentialAmount - potential redeem token amount(if there is enough tokens bounty at the organization )",
            "id": 13870,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "redeemDaoBounty",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13737,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13734,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 13870,
                  "src": "18941:19:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13733,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "18941:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13736,
                  "name": "_beneficiary",
                  "nodeType": "VariableDeclaration",
                  "scope": 13870,
                  "src": "18962:20:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13735,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18962:7:57",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "18940:43:57"
            },
            "returnParameters": {
              "id": 13742,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13739,
                  "name": "redeemedAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 13870,
                  "src": "19007:22:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13738,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "19007:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13741,
                  "name": "potentialAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 13870,
                  "src": "19031:23:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13740,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "19031:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "19006:49:57"
            },
            "scope": 15047,
            "src": "18916:1396:57",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 13895,
              "nodeType": "Block",
              "src": "20566:162:57",
              "statements": [
                {
                  "assignments": [
                    13878
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13878,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 13895,
                      "src": "20576:24:57",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 13877,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12613,
                        "src": "20576:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13882,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 13879,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12689,
                      "src": "20603:9:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$12613_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                      }
                    },
                    "id": 13881,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 13880,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13872,
                      "src": "20613:11:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "20603:22:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$12613_storage",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "20576:49:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 13892,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 13884,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13872,
                              "src": "20650:11:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 13883,
                            "name": "_score",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15006,
                            "src": "20643:6:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                              "typeString": "function (bytes32) view returns (uint256)"
                            }
                          },
                          "id": 13885,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20643:19:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13887,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13878,
                                "src": "20675:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal memory"
                                }
                              },
                              "id": 13888,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "paramsHash",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12576,
                              "src": "20675:19:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 13889,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13878,
                                "src": "20696:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal memory"
                                }
                              },
                              "id": 13890,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "organizationId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12564,
                              "src": "20696:23:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 13886,
                            "name": "threshold",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13935,
                            "src": "20665:9:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_uint256_$",
                              "typeString": "function (bytes32,bytes32) view returns (uint256)"
                            }
                          },
                          "id": 13891,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20665:55:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "20643:77:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 13893,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "20642:79:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 13876,
                  "id": 13894,
                  "nodeType": "Return",
                  "src": "20635:86:57"
                }
              ]
            },
            "documentation": "@dev shouldBoost check if a proposal should be shifted to boosted phase.\n@param _proposalId the ID of the proposal\n@return bool true or false.",
            "id": 13896,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "shouldBoost",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13873,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13872,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 13896,
                  "src": "20519:19:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13871,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "20519:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20518:21:57"
            },
            "returnParameters": {
              "id": 13876,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13875,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 13896,
                  "src": "20560:4:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 13874,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "20560:4:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20559:6:57"
            },
            "scope": 15047,
            "src": "20498:230:57",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 13934,
              "nodeType": "Block",
              "src": "21248:290:57",
              "statements": [
                {
                  "assignments": [
                    13906
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13906,
                      "name": "power",
                      "nodeType": "VariableDeclaration",
                      "scope": 13934,
                      "src": "21258:13:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 13905,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "21258:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13910,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 13907,
                      "name": "orgBoostedProposalsCnt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12693,
                      "src": "21274:22:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                        "typeString": "mapping(bytes32 => uint256)"
                      }
                    },
                    "id": 13909,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 13908,
                      "name": "_organizationId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13900,
                      "src": "21297:15:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "21274:39:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "21258:55:57"
                },
                {
                  "assignments": [
                    13912
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13912,
                      "name": "params",
                      "nodeType": "VariableDeclaration",
                      "scope": 13934,
                      "src": "21323:25:57",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$12548_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Parameters"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 13911,
                        "name": "Parameters",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12548,
                        "src": "21323:10:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$12548_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Parameters"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13916,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 13913,
                      "name": "parameters",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12685,
                      "src": "21351:10:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$12548_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                      }
                    },
                    "id": 13915,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 13914,
                      "name": "_paramsHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13898,
                      "src": "21362:11:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "21351:23:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Parameters_$12548_storage",
                      "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "21323:51:57"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 13920,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 13917,
                      "name": "power",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13906,
                      "src": "21389:5:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13918,
                        "name": "params",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13912,
                        "src": "21397:6:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$12548_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Parameters storage pointer"
                        }
                      },
                      "id": 13919,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "limitExponentValue",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12533,
                      "src": "21397:25:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "21389:33:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 13927,
                  "nodeType": "IfStatement",
                  "src": "21385:97:57",
                  "trueBody": {
                    "id": 13926,
                    "nodeType": "Block",
                    "src": "21424:58:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 13924,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 13921,
                            "name": "power",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13906,
                            "src": "21438:5:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 13922,
                              "name": "params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13912,
                              "src": "21446:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Parameters_$12548_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Parameters storage pointer"
                              }
                            },
                            "id": 13923,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "limitExponentValue",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12533,
                            "src": "21446:25:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "21438:33:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13925,
                        "nodeType": "ExpressionStatement",
                        "src": "21438:33:57"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 13931,
                        "name": "power",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13906,
                        "src": "21525:5:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 13928,
                          "name": "params",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13912,
                          "src": "21499:6:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Parameters_$12548_storage_ptr",
                            "typeString": "struct GenesisProtocolLogic.Parameters storage pointer"
                          }
                        },
                        "id": 13929,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "thresholdConst",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12531,
                        "src": "21499:21:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 13930,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "pow",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11111,
                      "src": "21499:25:57",
                      "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": 13932,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "21499:32:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 13904,
                  "id": 13933,
                  "nodeType": "Return",
                  "src": "21492:39:57"
                }
              ]
            },
            "documentation": "@dev threshold return the organization's score threshold which required by\na proposal to shift to boosted state.\nThis threshold is dynamically set and it depend on the number of boosted proposal.\n@param _organizationId the organization identifier\n@param _paramsHash the organization parameters hash\n@return uint256 organization's score threshold as real number.",
            "id": 13935,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "threshold",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13901,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13898,
                  "name": "_paramsHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 13935,
                  "src": "21173:19:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13897,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "21173:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13900,
                  "name": "_organizationId",
                  "nodeType": "VariableDeclaration",
                  "scope": 13935,
                  "src": "21194:23:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13899,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "21194:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "21172:46:57"
            },
            "returnParameters": {
              "id": 13904,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13903,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 13935,
                  "src": "21239:7:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13902,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "21239:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "21238:9:57"
            },
            "scope": 15047,
            "src": "21154:384:57",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 13991,
              "nodeType": "Block",
              "src": "21823:571:57",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 13952,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13939,
                                      "src": "22043:7:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 13954,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 13953,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22051:1:57",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22043:10:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 13955,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13939,
                                      "src": "22071:7:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 13957,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 13956,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22079:1:57",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22071:10:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 13958,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13939,
                                      "src": "22099:7:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 13960,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "32",
                                      "id": 13959,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22107:1:57",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22099:10:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 13961,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13939,
                                      "src": "22127:7:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 13963,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "33",
                                      "id": 13962,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22135:1:57",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_3_by_1",
                                        "typeString": "int_const 3"
                                      },
                                      "value": "3"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22127:10:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 13964,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13939,
                                      "src": "22155:7:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 13966,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "34",
                                      "id": 13965,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22163:1:57",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_4_by_1",
                                        "typeString": "int_const 4"
                                      },
                                      "value": "4"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22155:10:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 13967,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13939,
                                      "src": "22183:7:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 13969,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "35",
                                      "id": 13968,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22191:1:57",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_5_by_1",
                                        "typeString": "int_const 5"
                                      },
                                      "value": "5"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22183:10:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 13970,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13939,
                                      "src": "22211:7:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 13972,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "36",
                                      "id": 13971,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22219:1:57",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_6_by_1",
                                        "typeString": "int_const 6"
                                      },
                                      "value": "6"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22211:10:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 13973,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13939,
                                      "src": "22239:7:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 13975,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "37",
                                      "id": 13974,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22247:1:57",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_7_by_1",
                                        "typeString": "int_const 7"
                                      },
                                      "value": "7"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22239:10:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 13976,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13939,
                                      "src": "22267:7:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 13978,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "38",
                                      "id": 13977,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22275:1:57",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_8_by_1",
                                        "typeString": "int_const 8"
                                      },
                                      "value": "8"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22267:10:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 13979,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13939,
                                      "src": "22295:7:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 13981,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "39",
                                      "id": 13980,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22303:1:57",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_9_by_1",
                                        "typeString": "int_const 9"
                                      },
                                      "value": "9"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22295:10:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 13982,
                                      "name": "_params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13939,
                                      "src": "22323:7:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                                        "typeString": "uint256[11] memory"
                                      }
                                    },
                                    "id": 13984,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "3130",
                                      "id": 13983,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22331:2:57",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_10_by_1",
                                        "typeString": "int_const 10"
                                      },
                                      "value": "10"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "22323:11:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 13950,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16769,
                                    "src": "22009:3:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 13951,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "22009:16:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 13985,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "22009:326:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 13949,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16776,
                              "src": "21986:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 13986,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "21986:363:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 13987,
                            "name": "_voteOnBehalf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13941,
                            "src": "22363:13:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 13947,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16769,
                            "src": "21956:3:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13948,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "21956:16:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 13988,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "21956:430:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13946,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16776,
                      "src": "21933:9:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 13989,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "21933:454:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 13945,
                  "id": 13990,
                  "nodeType": "Return",
                  "src": "21926:461:57"
                }
              ]
            },
            "documentation": "@dev hashParameters returns a hash of the given parameters",
            "id": 13992,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getParametersHash",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13942,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13939,
                  "name": "_params",
                  "nodeType": "VariableDeclaration",
                  "scope": 13992,
                  "src": "21656:23:57",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$11_memory_ptr",
                    "typeString": "uint256[11]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 13936,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "21656:4:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 13938,
                    "length": {
                      "argumentTypes": null,
                      "hexValue": "3131",
                      "id": 13937,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "21661:2:57",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      },
                      "value": "11"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "21656:8:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$11_storage_ptr",
                      "typeString": "uint256[11]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13941,
                  "name": "_voteOnBehalf",
                  "nodeType": "VariableDeclaration",
                  "scope": 13992,
                  "src": "21734:21:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13940,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "21734:7:57",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "21646:115:57"
            },
            "returnParameters": {
              "id": 13945,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13944,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 13992,
                  "src": "21806:7:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13943,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "21806:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "21805:9:57"
            },
            "scope": 15047,
            "src": "21620:774:57",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14495,
              "nodeType": "Block",
              "src": "22810:6329:57",
              "statements": [
                {
                  "assignments": [
                    14003
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14003,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 14495,
                      "src": "22820:25:57",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 14002,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12613,
                        "src": "22820:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14007,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 14004,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12689,
                      "src": "22848:9:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$12613_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                      }
                    },
                    "id": 14006,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 14005,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13994,
                      "src": "22858:11:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "22848:22:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$12613_storage",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "22820:50:57"
                },
                {
                  "assignments": [
                    14009
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14009,
                      "name": "params",
                      "nodeType": "VariableDeclaration",
                      "scope": 14495,
                      "src": "22880:24:57",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$12548_memory_ptr",
                        "typeString": "struct GenesisProtocolLogic.Parameters"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 14008,
                        "name": "Parameters",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12548,
                        "src": "22880:10:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$12548_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Parameters"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14014,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 14010,
                      "name": "parameters",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12685,
                      "src": "22907:10:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$12548_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                      }
                    },
                    "id": 14013,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 14011,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14003,
                        "src": "22918:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 14012,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "paramsHash",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12576,
                      "src": "22918:19:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "22907:31:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Parameters_$12548_storage",
                      "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "22880:58:57"
                },
                {
                  "assignments": [
                    14016
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14016,
                      "name": "tmpProposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 14495,
                      "src": "22948:27:57",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 14015,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12613,
                        "src": "22948:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14018,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 14017,
                    "name": "proposal",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14003,
                    "src": "22978:8:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "22948:38:57"
                },
                {
                  "assignments": [
                    14020
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14020,
                      "name": "totalReputation",
                      "nodeType": "VariableDeclaration",
                      "scope": 14495,
                      "src": "22996:23:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14019,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "22996:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14028,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14026,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13994,
                        "src": "23107:11:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14022,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14003,
                              "src": "23062:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 14023,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "callbacks",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12566,
                            "src": "23062:18:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 14021,
                          "name": "VotingMachineCallbacksInterface",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15258,
                          "src": "23030:31:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_VotingMachineCallbacksInterface_$15258_$",
                            "typeString": "type(contract VotingMachineCallbacksInterface)"
                          }
                        },
                        "id": 14024,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "23030:51:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VotingMachineCallbacksInterface_$15258",
                          "typeString": "contract VotingMachineCallbacksInterface"
                        }
                      },
                      "id": 14025,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getTotalReputationSupply",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15239,
                      "src": "23030:76:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_uint256_$",
                        "typeString": "function (bytes32) view external returns (uint256)"
                      }
                    },
                    "id": 14027,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "23030:89:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "22996:123:57"
                },
                {
                  "assignments": [
                    14030
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14030,
                      "name": "executionBar",
                      "nodeType": "VariableDeclaration",
                      "scope": 14495,
                      "src": "23179:20:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14029,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "23179:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14038,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 14037,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14033,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 14031,
                            "name": "totalReputation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14020,
                            "src": "23203:15:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "313030",
                            "id": 14032,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "23219:3:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            },
                            "value": "100"
                          },
                          "src": "23203:19:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 14034,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "23202:21:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 14035,
                        "name": "params",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14009,
                        "src": "23226:6:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$12548_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Parameters memory"
                        }
                      },
                      "id": 14036,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "queuedVoteRequiredPercentage",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12523,
                      "src": "23226:35:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "23202:59:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "23179:82:57"
                },
                {
                  "assignments": [
                    14040
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14040,
                      "name": "executionState",
                      "nodeType": "VariableDeclaration",
                      "scope": 14495,
                      "src": "23271:29:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ExecutionState_$12521",
                        "typeString": "enum GenesisProtocolLogic.ExecutionState"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 14039,
                        "name": "ExecutionState",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12521,
                        "src": "23271:14:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ExecutionState_$12521",
                          "typeString": "enum GenesisProtocolLogic.ExecutionState"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14043,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 14041,
                      "name": "ExecutionState",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12521,
                      "src": "23303:14:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_enum$_ExecutionState_$12521_$",
                        "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                      }
                    },
                    "id": 14042,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberName": "None",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "23303:19:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ExecutionState_$12521",
                      "typeString": "enum GenesisProtocolLogic.ExecutionState"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "23271:51:57"
                },
                {
                  "assignments": [
                    14045
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14045,
                      "name": "averageDownstakesOfBoosted",
                      "nodeType": "VariableDeclaration",
                      "scope": 14495,
                      "src": "23332:34:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14044,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "23332:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14046,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "23332:34:57"
                },
                {
                  "assignments": [
                    14048
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14048,
                      "name": "confidenceThreshold",
                      "nodeType": "VariableDeclaration",
                      "scope": 14495,
                      "src": "23376:27:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14047,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "23376:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14049,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "23376:27:57"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 14056,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 14050,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14003,
                          "src": "23418:8:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                          }
                        },
                        "id": 14051,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "votes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12596,
                        "src": "23418:14:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 14054,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 14052,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14003,
                          "src": "23433:8:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                          }
                        },
                        "id": 14053,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "winningVote",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12570,
                        "src": "23433:20:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "23418:36:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 14055,
                      "name": "executionBar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14030,
                      "src": "23457:12:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "23418:51:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 14320,
                    "nodeType": "Block",
                    "src": "23966:3135:57",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$12514",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 14099,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14095,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14003,
                              "src": "23984:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 14096,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12568,
                            "src": "23984:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14097,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12514,
                              "src": "24002:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 14098,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Queued",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "24002:20:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "23984:38:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 14169,
                        "nodeType": "IfStatement",
                        "src": "23980:944:57",
                        "trueBody": {
                          "id": 14168,
                          "nodeType": "Block",
                          "src": "24024:900:57",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14109,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 14105,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 14100,
                                        "name": "now",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16784,
                                        "src": "24109:3:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 14101,
                                            "name": "proposal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14003,
                                            "src": "24115:8:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                            }
                                          },
                                          "id": 14102,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "times",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 12590,
                                          "src": "24115:14:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$3_storage",
                                            "typeString": "uint256[3] storage ref"
                                          }
                                        },
                                        "id": 14104,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "30",
                                          "id": 14103,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "24130:1:57",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "24115:17:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "24109:23:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 14106,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "24108:25:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14107,
                                    "name": "params",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14009,
                                    "src": "24137:6:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Parameters_$12548_memory_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Parameters memory"
                                    }
                                  },
                                  "id": 14108,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "queuedVotePeriodLimit",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12525,
                                  "src": "24137:28:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "24108:57:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 14166,
                                "nodeType": "Block",
                                "src": "24372:538:57",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14136,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 14129,
                                        "name": "confidenceThreshold",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14048,
                                        "src": "24394:19:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 14131,
                                              "name": "proposal",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 14003,
                                              "src": "24426:8:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                              }
                                            },
                                            "id": 14132,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "paramsHash",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 12576,
                                            "src": "24426:19:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 14133,
                                              "name": "proposal",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 14003,
                                              "src": "24447:8:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                              }
                                            },
                                            "id": 14134,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "organizationId",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 12564,
                                            "src": "24447:23:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            },
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          ],
                                          "id": 14130,
                                          "name": "threshold",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13935,
                                          "src": "24416:9:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_uint256_$",
                                            "typeString": "function (bytes32,bytes32) view returns (uint256)"
                                          }
                                        },
                                        "id": 14135,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "24416:55:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "24394:77:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 14137,
                                    "nodeType": "ExpressionStatement",
                                    "src": "24394:77:57"
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 14142,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 14139,
                                            "name": "_proposalId",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 13994,
                                            "src": "24504:11:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          ],
                                          "id": 14138,
                                          "name": "_score",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15006,
                                          "src": "24497:6:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                            "typeString": "function (bytes32) view returns (uint256)"
                                          }
                                        },
                                        "id": 14140,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "24497:19:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 14141,
                                        "name": "confidenceThreshold",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14048,
                                        "src": "24519:19:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "24497:41:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": null,
                                    "id": 14165,
                                    "nodeType": "IfStatement",
                                    "src": "24493:399:57",
                                    "trueBody": {
                                      "id": 14164,
                                      "nodeType": "Block",
                                      "src": "24540:352:57",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 14148,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 14143,
                                                "name": "proposal",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 14003,
                                                "src": "24633:8:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                }
                                              },
                                              "id": 14145,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "memberName": "state",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 12568,
                                              "src": "24633:14:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_enum$_ProposalState_$12514",
                                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 14146,
                                                "name": "ProposalState",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12514,
                                                "src": "24650:13:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                                  "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                                }
                                              },
                                              "id": 14147,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "memberName": "PreBoosted",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "24650:24:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_enum$_ProposalState_$12514",
                                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                                              }
                                            },
                                            "src": "24633:41:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                                            }
                                          },
                                          "id": 14149,
                                          "nodeType": "ExpressionStatement",
                                          "src": "24633:41:57"
                                        },
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 14156,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "baseExpression": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 14150,
                                                  "name": "proposal",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 14003,
                                                  "src": "24770:8:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                  }
                                                },
                                                "id": 14153,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "times",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 12590,
                                                "src": "24770:14:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_uint256_$3_storage",
                                                  "typeString": "uint256[3] storage ref"
                                                }
                                              },
                                              "id": 14154,
                                              "indexExpression": {
                                                "argumentTypes": null,
                                                "hexValue": "32",
                                                "id": 14152,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "24785:1:57",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_2_by_1",
                                                  "typeString": "int_const 2"
                                                },
                                                "value": "2"
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "nodeType": "IndexAccess",
                                              "src": "24770:17:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "id": 14155,
                                              "name": "now",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 16784,
                                              "src": "24790:3:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "24770:23:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 14157,
                                          "nodeType": "ExpressionStatement",
                                          "src": "24770:23:57"
                                        },
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 14162,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 14158,
                                                "name": "proposal",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 14003,
                                                "src": "24819:8:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                }
                                              },
                                              "id": 14160,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "memberName": "confidenceThreshold",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 12584,
                                              "src": "24819:28:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "id": 14161,
                                              "name": "confidenceThreshold",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 14048,
                                              "src": "24850:19:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "24819:50:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 14163,
                                          "nodeType": "ExpressionStatement",
                                          "src": "24819:50:57"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              "id": 14167,
                              "nodeType": "IfStatement",
                              "src": "24104:806:57",
                              "trueBody": {
                                "id": 14128,
                                "nodeType": "Block",
                                "src": "24167:199:57",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14115,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 14110,
                                          "name": "proposal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14003,
                                          "src": "24189:8:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                          }
                                        },
                                        "id": 14112,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "state",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 12568,
                                        "src": "24189:14:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_ProposalState_$12514",
                                          "typeString": "enum GenesisProtocolLogic.ProposalState"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 14113,
                                          "name": "ProposalState",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12514,
                                          "src": "24206:13:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                            "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                          }
                                        },
                                        "id": 14114,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "ExpiredInQueue",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "24206:28:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_ProposalState_$12514",
                                          "typeString": "enum GenesisProtocolLogic.ProposalState"
                                        }
                                      },
                                      "src": "24189:45:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ProposalState_$12514",
                                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                                      }
                                    },
                                    "id": 14116,
                                    "nodeType": "ExpressionStatement",
                                    "src": "24189:45:57"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14121,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 14117,
                                          "name": "proposal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14003,
                                          "src": "24256:8:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                          }
                                        },
                                        "id": 14119,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "winningVote",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 12570,
                                        "src": "24256:20:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "id": 14120,
                                        "name": "NO",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12707,
                                        "src": "24279:2:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "24256:25:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 14122,
                                    "nodeType": "ExpressionStatement",
                                    "src": "24256:25:57"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14126,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 14123,
                                        "name": "executionState",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14040,
                                        "src": "24303:14:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                          "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 14124,
                                          "name": "ExecutionState",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12521,
                                          "src": "24320:14:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_enum$_ExecutionState_$12521_$",
                                            "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                                          }
                                        },
                                        "id": 14125,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "QueueTimeOut",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "24320:27:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                          "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                        }
                                      },
                                      "src": "24303:44:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                        "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                      }
                                    },
                                    "id": 14127,
                                    "nodeType": "ExpressionStatement",
                                    "src": "24303:44:57"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$12514",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 14174,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14170,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14003,
                              "src": "24942:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 14171,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12568,
                            "src": "24942:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14172,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12514,
                              "src": "24960:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 14173,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "PreBoosted",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "24960:24:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "24942:42:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 14319,
                        "nodeType": "IfStatement",
                        "src": "24938:2153:57",
                        "trueBody": {
                          "id": 14318,
                          "nodeType": "Block",
                          "src": "24986:2105:57",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 14182,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 14175,
                                  "name": "confidenceThreshold",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14048,
                                  "src": "25004:19:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 14177,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14003,
                                        "src": "25036:8:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                        }
                                      },
                                      "id": 14178,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "paramsHash",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 12576,
                                      "src": "25036:19:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 14179,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14003,
                                        "src": "25057:8:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                        }
                                      },
                                      "id": 14180,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "organizationId",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 12564,
                                      "src": "25057:23:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "id": 14176,
                                    "name": "threshold",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13935,
                                    "src": "25026:9:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_uint256_$",
                                      "typeString": "function (bytes32,bytes32) view returns (uint256)"
                                    }
                                  },
                                  "id": 14181,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "25026:55:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "25004:77:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 14183,
                              "nodeType": "ExpressionStatement",
                              "src": "25004:77:57"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14193,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 14189,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 14184,
                                        "name": "now",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16784,
                                        "src": "25164:3:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 14185,
                                            "name": "proposal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14003,
                                            "src": "25170:8:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                            }
                                          },
                                          "id": 14186,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "times",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 12590,
                                          "src": "25170:14:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$3_storage",
                                            "typeString": "uint256[3] storage ref"
                                          }
                                        },
                                        "id": 14188,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "32",
                                          "id": 14187,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "25185:1:57",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_2_by_1",
                                            "typeString": "int_const 2"
                                          },
                                          "value": "2"
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "25170:17:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "25164:23:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 14190,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "25163:25:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14191,
                                    "name": "params",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14009,
                                    "src": "25192:6:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Parameters_$12548_memory_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Parameters memory"
                                    }
                                  },
                                  "id": 14192,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "preBoostedVotePeriodLimit",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12529,
                                  "src": "25192:32:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "25163:61:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 14316,
                                "nodeType": "Block",
                                "src": "26530:547:57",
                                "statements": [
                                  {
                                    "assignments": [
                                      14278
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 14278,
                                        "name": "proposalScore",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 14316,
                                        "src": "26591:21:57",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 14277,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "26591:7:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 14282,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 14280,
                                          "name": "_proposalId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13994,
                                          "src": "26622:11:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        ],
                                        "id": 14279,
                                        "name": "_score",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15006,
                                        "src": "26615:6:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                          "typeString": "function (bytes32) view returns (uint256)"
                                        }
                                      },
                                      "id": 14281,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "26615:19:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "26591:43:57"
                                  },
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 14289,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 14283,
                                        "name": "proposalScore",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14278,
                                        "src": "26660:13:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 14287,
                                            "name": "confidenceThreshold",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14048,
                                            "src": "26710:19:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 14284,
                                              "name": "proposal",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 14003,
                                              "src": "26677:8:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                              }
                                            },
                                            "id": 14285,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "confidenceThreshold",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 12584,
                                            "src": "26677:28:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 14286,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "min",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 15758,
                                          "src": "26677:32:57",
                                          "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": 14288,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "26677:53:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "26660:70:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "condition": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 14301,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 14298,
                                            "name": "proposal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14003,
                                            "src": "26828:8:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                            }
                                          },
                                          "id": 14299,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "confidenceThreshold",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 12584,
                                          "src": "26828:28:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 14300,
                                          "name": "proposalScore",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14278,
                                          "src": "26859:13:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "26828:44:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "falseBody": null,
                                      "id": 14314,
                                      "nodeType": "IfStatement",
                                      "src": "26824:235:57",
                                      "trueBody": {
                                        "id": 14313,
                                        "nodeType": "Block",
                                        "src": "26874:185:57",
                                        "statements": [
                                          {
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 14306,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 14302,
                                                  "name": "proposal",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 14003,
                                                  "src": "26900:8:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                  }
                                                },
                                                "id": 14304,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": true,
                                                "memberName": "confidenceThreshold",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 12584,
                                                "src": "26900:28:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "argumentTypes": null,
                                                "id": 14305,
                                                "name": "confidenceThreshold",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 14048,
                                                "src": "26931:19:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "26900:50:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 14307,
                                            "nodeType": "ExpressionStatement",
                                            "src": "26900:50:57"
                                          },
                                          {
                                            "eventCall": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 14309,
                                                  "name": "_proposalId",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 13994,
                                                  "src": "27003:11:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                  }
                                                },
                                                {
                                                  "argumentTypes": null,
                                                  "id": 14310,
                                                  "name": "confidenceThreshold",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 14048,
                                                  "src": "27016:19:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "id": 14308,
                                                "name": "ConfidenceLevelChange",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12681,
                                                "src": "26981:21:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
                                                  "typeString": "function (bytes32,uint256)"
                                                }
                                              },
                                              "id": 14311,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "26981:55:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_tuple$__$",
                                                "typeString": "tuple()"
                                              }
                                            },
                                            "id": 14312,
                                            "nodeType": "EmitStatement",
                                            "src": "26976:60:57"
                                          }
                                        ]
                                      }
                                    },
                                    "id": 14315,
                                    "nodeType": "IfStatement",
                                    "src": "26656:403:57",
                                    "trueBody": {
                                      "id": 14297,
                                      "nodeType": "Block",
                                      "src": "26732:86:57",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 14295,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 14290,
                                                "name": "proposal",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 14003,
                                                "src": "26758:8:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                }
                                              },
                                              "id": 14292,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "memberName": "state",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 12568,
                                              "src": "26758:14:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_enum$_ProposalState_$12514",
                                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 14293,
                                                "name": "ProposalState",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12514,
                                                "src": "26775:13:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                                  "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                                }
                                              },
                                              "id": 14294,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "memberName": "Queued",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "26775:20:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_enum$_ProposalState_$12514",
                                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                                              }
                                            },
                                            "src": "26758:37:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                                            }
                                          },
                                          "id": 14296,
                                          "nodeType": "ExpressionStatement",
                                          "src": "26758:37:57"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              "id": 14317,
                              "nodeType": "IfStatement",
                              "src": "25159:1918:57",
                              "trueBody": {
                                "id": 14276,
                                "nodeType": "Block",
                                "src": "25226:1298:57",
                                "statements": [
                                  {
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 14198,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 14195,
                                            "name": "_proposalId",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 13994,
                                            "src": "25259:11:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          ],
                                          "id": 14194,
                                          "name": "_score",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15006,
                                          "src": "25252:6:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                                            "typeString": "function (bytes32) view returns (uint256)"
                                          }
                                        },
                                        "id": 14196,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "25252:19:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 14197,
                                        "name": "confidenceThreshold",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14048,
                                        "src": "25274:19:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "25252:41:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "id": 14274,
                                      "nodeType": "Block",
                                      "src": "26420:86:57",
                                      "statements": [
                                        {
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 14272,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 14267,
                                                "name": "proposal",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 14003,
                                                "src": "26446:8:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                }
                                              },
                                              "id": 14269,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "memberName": "state",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 12568,
                                              "src": "26446:14:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_enum$_ProposalState_$12514",
                                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 14270,
                                                "name": "ProposalState",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12514,
                                                "src": "26463:13:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                                  "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                                }
                                              },
                                              "id": 14271,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "memberName": "Queued",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "26463:20:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_enum$_ProposalState_$12514",
                                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                                              }
                                            },
                                            "src": "26446:37:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                                            }
                                          },
                                          "id": 14273,
                                          "nodeType": "ExpressionStatement",
                                          "src": "26446:37:57"
                                        }
                                      ]
                                    },
                                    "id": 14275,
                                    "nodeType": "IfStatement",
                                    "src": "25248:1258:57",
                                    "trueBody": {
                                      "id": 14266,
                                      "nodeType": "Block",
                                      "src": "25295:1119:57",
                                      "statements": [
                                        {
                                          "condition": {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 14204,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "baseExpression": {
                                                "argumentTypes": null,
                                                "id": 14199,
                                                "name": "orgBoostedProposalsCnt",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12693,
                                                "src": "25325:22:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                  "typeString": "mapping(bytes32 => uint256)"
                                                }
                                              },
                                              "id": 14202,
                                              "indexExpression": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 14200,
                                                  "name": "proposal",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 14003,
                                                  "src": "25348:8:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                  }
                                                },
                                                "id": 14201,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "organizationId",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 12564,
                                                "src": "25348:23:57",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "25325:47:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "<",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "id": 14203,
                                              "name": "MAX_BOOSTED_PROPOSALS",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 12720,
                                              "src": "25375:21:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "25325:71:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "falseBody": null,
                                          "id": 14265,
                                          "nodeType": "IfStatement",
                                          "src": "25321:1071:57",
                                          "trueBody": {
                                            "id": 14264,
                                            "nodeType": "Block",
                                            "src": "25398:994:57",
                                            "statements": [
                                              {
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 14210,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftHandSide": {
                                                    "argumentTypes": null,
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "id": 14205,
                                                      "name": "proposal",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 14003,
                                                      "src": "25493:8:57",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                        "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                      }
                                                    },
                                                    "id": 14207,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": true,
                                                    "memberName": "state",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 12568,
                                                    "src": "25493:14:57",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_enum$_ProposalState_$12514",
                                                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                                                    }
                                                  },
                                                  "nodeType": "Assignment",
                                                  "operator": "=",
                                                  "rightHandSide": {
                                                    "argumentTypes": null,
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "id": 14208,
                                                      "name": "ProposalState",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 12514,
                                                      "src": "25510:13:57",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                                        "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                                      }
                                                    },
                                                    "id": 14209,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "memberName": "Boosted",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": null,
                                                    "src": "25510:21:57",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_enum$_ProposalState_$12514",
                                                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                                                    }
                                                  },
                                                  "src": "25493:38:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_enum$_ProposalState_$12514",
                                                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                                                  }
                                                },
                                                "id": 14211,
                                                "nodeType": "ExpressionStatement",
                                                "src": "25493:38:57"
                                              },
                                              {
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 14218,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftHandSide": {
                                                    "argumentTypes": null,
                                                    "baseExpression": {
                                                      "argumentTypes": null,
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "id": 14212,
                                                        "name": "proposal",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 14003,
                                                        "src": "25632:8:57",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                        }
                                                      },
                                                      "id": 14215,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "times",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 12590,
                                                      "src": "25632:14:57",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_uint256_$3_storage",
                                                        "typeString": "uint256[3] storage ref"
                                                      }
                                                    },
                                                    "id": 14216,
                                                    "indexExpression": {
                                                      "argumentTypes": null,
                                                      "hexValue": "31",
                                                      "id": 14214,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "25647:1:57",
                                                      "subdenomination": null,
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_1_by_1",
                                                        "typeString": "int_const 1"
                                                      },
                                                      "value": "1"
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": true,
                                                    "nodeType": "IndexAccess",
                                                    "src": "25632:17:57",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "Assignment",
                                                  "operator": "=",
                                                  "rightHandSide": {
                                                    "argumentTypes": null,
                                                    "id": 14217,
                                                    "name": "now",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 16784,
                                                    "src": "25652:3:57",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "src": "25632:23:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 14219,
                                                "nodeType": "ExpressionStatement",
                                                "src": "25632:23:57"
                                              },
                                              {
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 14224,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "UnaryOperation",
                                                  "operator": "++",
                                                  "prefix": false,
                                                  "src": "25685:49:57",
                                                  "subExpression": {
                                                    "argumentTypes": null,
                                                    "baseExpression": {
                                                      "argumentTypes": null,
                                                      "id": 14220,
                                                      "name": "orgBoostedProposalsCnt",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 12693,
                                                      "src": "25685:22:57",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                        "typeString": "mapping(bytes32 => uint256)"
                                                      }
                                                    },
                                                    "id": 14223,
                                                    "indexExpression": {
                                                      "argumentTypes": null,
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "id": 14221,
                                                        "name": "proposal",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 14003,
                                                        "src": "25708:8:57",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                        }
                                                      },
                                                      "id": 14222,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "organizationId",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 12564,
                                                      "src": "25708:23:57",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                      }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": true,
                                                    "nodeType": "IndexAccess",
                                                    "src": "25685:47:57",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 14225,
                                                "nodeType": "ExpressionStatement",
                                                "src": "25685:49:57"
                                              },
                                              {
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 14231,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftHandSide": {
                                                    "argumentTypes": null,
                                                    "id": 14226,
                                                    "name": "averageDownstakesOfBoosted",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 14045,
                                                    "src": "25868:26:57",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "Assignment",
                                                  "operator": "=",
                                                  "rightHandSide": {
                                                    "argumentTypes": null,
                                                    "baseExpression": {
                                                      "argumentTypes": null,
                                                      "id": 14227,
                                                      "name": "averagesDownstakesOfBoosted",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 12701,
                                                      "src": "25897:27:57",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                        "typeString": "mapping(bytes32 => uint256)"
                                                      }
                                                    },
                                                    "id": 14230,
                                                    "indexExpression": {
                                                      "argumentTypes": null,
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "id": 14228,
                                                        "name": "proposal",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 14003,
                                                        "src": "25925:8:57",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                        }
                                                      },
                                                      "id": 14229,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "organizationId",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 12564,
                                                      "src": "25925:23:57",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                      }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "25897:52:57",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "src": "25868:81:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 14232,
                                                "nodeType": "ExpressionStatement",
                                                "src": "25868:81:57"
                                              },
                                              {
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 14262,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftHandSide": {
                                                    "argumentTypes": null,
                                                    "baseExpression": {
                                                      "argumentTypes": null,
                                                      "id": 14233,
                                                      "name": "averagesDownstakesOfBoosted",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 12701,
                                                      "src": "26045:27:57",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                        "typeString": "mapping(bytes32 => uint256)"
                                                      }
                                                    },
                                                    "id": 14236,
                                                    "indexExpression": {
                                                      "argumentTypes": null,
                                                      "expression": {
                                                        "argumentTypes": null,
                                                        "id": 14234,
                                                        "name": "proposal",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 14003,
                                                        "src": "26073:8:57",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                        }
                                                      },
                                                      "id": 14235,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "organizationId",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 12564,
                                                      "src": "26073:23:57",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                      }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": true,
                                                    "nodeType": "IndexAccess",
                                                    "src": "26045:52:57",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "Assignment",
                                                  "operator": "=",
                                                  "rightHandSide": {
                                                    "argumentTypes": null,
                                                    "arguments": [
                                                      {
                                                        "argumentTypes": null,
                                                        "commonType": {
                                                          "typeIdentifier": "t_int256",
                                                          "typeString": "int256"
                                                        },
                                                        "id": 14260,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                          "argumentTypes": null,
                                                          "arguments": [
                                                            {
                                                              "argumentTypes": null,
                                                              "id": 14239,
                                                              "name": "averageDownstakesOfBoosted",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 14045,
                                                              "src": "26147:26:57",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            }
                                                          ],
                                                          "expression": {
                                                            "argumentTypes": [
                                                              {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            ],
                                                            "id": 14238,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "26140:6:57",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_type$_t_int256_$",
                                                              "typeString": "type(int256)"
                                                            },
                                                            "typeName": "int256"
                                                          },
                                                          "id": 14240,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "kind": "typeConversion",
                                                          "lValueRequested": false,
                                                          "names": [],
                                                          "nodeType": "FunctionCall",
                                                          "src": "26140:34:57",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                          }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "+",
                                                        "rightExpression": {
                                                          "argumentTypes": null,
                                                          "components": [
                                                            {
                                                              "argumentTypes": null,
                                                              "commonType": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                              },
                                                              "id": 14258,
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "leftExpression": {
                                                                "argumentTypes": null,
                                                                "components": [
                                                                  {
                                                                    "argumentTypes": null,
                                                                    "commonType": {
                                                                      "typeIdentifier": "t_int256",
                                                                      "typeString": "int256"
                                                                    },
                                                                    "id": 14250,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                      "argumentTypes": null,
                                                                      "arguments": [
                                                                        {
                                                                          "argumentTypes": null,
                                                                          "baseExpression": {
                                                                            "argumentTypes": null,
                                                                            "expression": {
                                                                              "argumentTypes": null,
                                                                              "id": 14242,
                                                                              "name": "proposal",
                                                                              "nodeType": "Identifier",
                                                                              "overloadedDeclarations": [],
                                                                              "referencedDeclaration": 14003,
                                                                              "src": "26218:8:57",
                                                                              "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                                              }
                                                                            },
                                                                            "id": 14243,
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "stakes",
                                                                            "nodeType": "MemberAccess",
                                                                            "referencedDeclaration": 12608,
                                                                            "src": "26218:15:57",
                                                                            "typeDescriptions": {
                                                                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                                                              "typeString": "mapping(uint256 => uint256)"
                                                                            }
                                                                          },
                                                                          "id": 14245,
                                                                          "indexExpression": {
                                                                            "argumentTypes": null,
                                                                            "id": 14244,
                                                                            "name": "NO",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 12707,
                                                                            "src": "26234:2:57",
                                                                            "typeDescriptions": {
                                                                              "typeIdentifier": "t_uint256",
                                                                              "typeString": "uint256"
                                                                            }
                                                                          },
                                                                          "isConstant": false,
                                                                          "isLValue": true,
                                                                          "isPure": false,
                                                                          "lValueRequested": false,
                                                                          "nodeType": "IndexAccess",
                                                                          "src": "26218:19:57",
                                                                          "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                          }
                                                                        }
                                                                      ],
                                                                      "expression": {
                                                                        "argumentTypes": [
                                                                          {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                          }
                                                                        ],
                                                                        "id": 14241,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "26211:6:57",
                                                                        "typeDescriptions": {
                                                                          "typeIdentifier": "t_type$_t_int256_$",
                                                                          "typeString": "type(int256)"
                                                                        },
                                                                        "typeName": "int256"
                                                                      },
                                                                      "id": 14246,
                                                                      "isConstant": false,
                                                                      "isLValue": false,
                                                                      "isPure": false,
                                                                      "kind": "typeConversion",
                                                                      "lValueRequested": false,
                                                                      "names": [],
                                                                      "nodeType": "FunctionCall",
                                                                      "src": "26211:27:57",
                                                                      "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                      }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "-",
                                                                    "rightExpression": {
                                                                      "argumentTypes": null,
                                                                      "arguments": [
                                                                        {
                                                                          "argumentTypes": null,
                                                                          "id": 14248,
                                                                          "name": "averageDownstakesOfBoosted",
                                                                          "nodeType": "Identifier",
                                                                          "overloadedDeclarations": [],
                                                                          "referencedDeclaration": 14045,
                                                                          "src": "26246:26:57",
                                                                          "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                          }
                                                                        }
                                                                      ],
                                                                      "expression": {
                                                                        "argumentTypes": [
                                                                          {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                          }
                                                                        ],
                                                                        "id": 14247,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "26239:6:57",
                                                                        "typeDescriptions": {
                                                                          "typeIdentifier": "t_type$_t_int256_$",
                                                                          "typeString": "type(int256)"
                                                                        },
                                                                        "typeName": "int256"
                                                                      },
                                                                      "id": 14249,
                                                                      "isConstant": false,
                                                                      "isLValue": false,
                                                                      "isPure": false,
                                                                      "kind": "typeConversion",
                                                                      "lValueRequested": false,
                                                                      "names": [],
                                                                      "nodeType": "FunctionCall",
                                                                      "src": "26239:34:57",
                                                                      "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                      }
                                                                    },
                                                                    "src": "26211:62:57",
                                                                    "typeDescriptions": {
                                                                      "typeIdentifier": "t_int256",
                                                                      "typeString": "int256"
                                                                    }
                                                                  }
                                                                ],
                                                                "id": 14251,
                                                                "isConstant": false,
                                                                "isInlineArray": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "TupleExpression",
                                                                "src": "26210:64:57",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_int256",
                                                                  "typeString": "int256"
                                                                }
                                                              },
                                                              "nodeType": "BinaryOperation",
                                                              "operator": "/",
                                                              "rightExpression": {
                                                                "argumentTypes": null,
                                                                "arguments": [
                                                                  {
                                                                    "argumentTypes": null,
                                                                    "baseExpression": {
                                                                      "argumentTypes": null,
                                                                      "id": 14253,
                                                                      "name": "orgBoostedProposalsCnt",
                                                                      "nodeType": "Identifier",
                                                                      "overloadedDeclarations": [],
                                                                      "referencedDeclaration": 12693,
                                                                      "src": "26315:22:57",
                                                                      "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                                        "typeString": "mapping(bytes32 => uint256)"
                                                                      }
                                                                    },
                                                                    "id": 14256,
                                                                    "indexExpression": {
                                                                      "argumentTypes": null,
                                                                      "expression": {
                                                                        "argumentTypes": null,
                                                                        "id": 14254,
                                                                        "name": "proposal",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 14003,
                                                                        "src": "26338:8:57",
                                                                        "typeDescriptions": {
                                                                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                                        }
                                                                      },
                                                                      "id": 14255,
                                                                      "isConstant": false,
                                                                      "isLValue": true,
                                                                      "isPure": false,
                                                                      "lValueRequested": false,
                                                                      "memberName": "organizationId",
                                                                      "nodeType": "MemberAccess",
                                                                      "referencedDeclaration": 12564,
                                                                      "src": "26338:23:57",
                                                                      "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                      }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "26315:47:57",
                                                                    "typeDescriptions": {
                                                                      "typeIdentifier": "t_uint256",
                                                                      "typeString": "uint256"
                                                                    }
                                                                  }
                                                                ],
                                                                "expression": {
                                                                  "argumentTypes": [
                                                                    {
                                                                      "typeIdentifier": "t_uint256",
                                                                      "typeString": "uint256"
                                                                    }
                                                                  ],
                                                                  "id": 14252,
                                                                  "isConstant": false,
                                                                  "isLValue": false,
                                                                  "isPure": true,
                                                                  "lValueRequested": false,
                                                                  "nodeType": "ElementaryTypeNameExpression",
                                                                  "src": "26308:6:57",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_int256_$",
                                                                    "typeString": "type(int256)"
                                                                  },
                                                                  "typeName": "int256"
                                                                },
                                                                "id": 14257,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "26308:55:57",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_int256",
                                                                  "typeString": "int256"
                                                                }
                                                              },
                                                              "src": "26210:153:57",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                              }
                                                            }
                                                          ],
                                                          "id": 14259,
                                                          "isConstant": false,
                                                          "isInlineArray": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "nodeType": "TupleExpression",
                                                          "src": "26209:155:57",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                          }
                                                        },
                                                        "src": "26140:224:57",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_int256",
                                                          "typeString": "int256"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_int256",
                                                          "typeString": "int256"
                                                        }
                                                      ],
                                                      "id": 14237,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "nodeType": "ElementaryTypeNameExpression",
                                                      "src": "26132:7:57",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_uint256_$",
                                                        "typeString": "type(uint256)"
                                                      },
                                                      "typeName": "uint256"
                                                    },
                                                    "id": 14261,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "26132:233:57",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "src": "26045:320:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 14263,
                                                "nodeType": "ExpressionStatement",
                                                "src": "26045:320:57"
                                              }
                                            ]
                                          }
                                        }
                                      ]
                                    }
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 14321,
                  "nodeType": "IfStatement",
                  "src": "23414:3687:57",
                  "trueBody": {
                    "id": 14094,
                    "nodeType": "Block",
                    "src": "23471:489:57",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$12514",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 14061,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14057,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14003,
                              "src": "23550:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 14058,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12568,
                            "src": "23550:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14059,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12514,
                              "src": "23568:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 14060,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Queued",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "23568:20:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "23550:38:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            },
                            "id": 14072,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14068,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14003,
                                "src": "23680:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 14069,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "state",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12568,
                              "src": "23680:14:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalState_$12514",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14070,
                                "name": "ProposalState",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12514,
                                "src": "23698:13:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                  "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                }
                              },
                              "id": 14071,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "PreBoosted",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "23698:24:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalState_$12514",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              }
                            },
                            "src": "23680:42:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 14084,
                            "nodeType": "Block",
                            "src": "23815:82:57",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14082,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 14079,
                                    "name": "executionState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14040,
                                    "src": "23833:14:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                      "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14080,
                                      "name": "ExecutionState",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12521,
                                      "src": "23850:14:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_ExecutionState_$12521_$",
                                        "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                                      }
                                    },
                                    "id": 14081,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "BoostedBarCrossed",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "23850:32:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                      "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                    }
                                  },
                                  "src": "23833:49:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "id": 14083,
                                "nodeType": "ExpressionStatement",
                                "src": "23833:49:57"
                              }
                            ]
                          },
                          "id": 14085,
                          "nodeType": "IfStatement",
                          "src": "23676:221:57",
                          "trueBody": {
                            "id": 14078,
                            "nodeType": "Block",
                            "src": "23724:85:57",
                            "statements": [
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14076,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 14073,
                                    "name": "executionState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14040,
                                    "src": "23742:14:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                      "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14074,
                                      "name": "ExecutionState",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12521,
                                      "src": "23759:14:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_ExecutionState_$12521_$",
                                        "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                                      }
                                    },
                                    "id": 14075,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "PreBoostedBarCrossed",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "23759:35:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                      "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                    }
                                  },
                                  "src": "23742:52:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "id": 14077,
                                "nodeType": "ExpressionStatement",
                                "src": "23742:52:57"
                              }
                            ]
                          }
                        },
                        "id": 14086,
                        "nodeType": "IfStatement",
                        "src": "23546:351:57",
                        "trueBody": {
                          "id": 14067,
                          "nodeType": "Block",
                          "src": "23590:80:57",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 14065,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 14062,
                                  "name": "executionState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14040,
                                  "src": "23608:14:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14063,
                                    "name": "ExecutionState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12521,
                                    "src": "23625:14:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ExecutionState_$12521_$",
                                      "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                                    }
                                  },
                                  "id": 14064,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "QueueBarCrossed",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "23625:30:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "src": "23608:47:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                  "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                }
                              },
                              "id": 14066,
                              "nodeType": "ExpressionStatement",
                              "src": "23608:47:57"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14092,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14087,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14003,
                              "src": "23910:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 14089,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12568,
                            "src": "23910:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14090,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12514,
                              "src": "23927:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 14091,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Executed",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "23927:22:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "23910:39:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ProposalState_$12514",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          }
                        },
                        "id": 14093,
                        "nodeType": "ExpressionStatement",
                        "src": "23910:39:57"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 14334,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$12514",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 14326,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14322,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14003,
                              "src": "27116:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 14323,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12568,
                            "src": "27116:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14324,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12514,
                              "src": "27134:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 14325,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Boosted",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "27134:21:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "27116:39:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 14327,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "27115:41:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$12514",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 14332,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14328,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14003,
                              "src": "27173:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 14329,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12568,
                            "src": "27173:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14330,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12514,
                              "src": "27191:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 14331,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "QuietEndingPeriod",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "27191:31:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "27173:49:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 14333,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "27172:51:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "27115:108:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 14360,
                  "nodeType": "IfStatement",
                  "src": "27111:405:57",
                  "trueBody": {
                    "id": 14359,
                    "nodeType": "Block",
                    "src": "27225:291:57",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14344,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14340,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 14335,
                                  "name": "now",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16784,
                                  "src": "27302:3:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14336,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14003,
                                      "src": "27308:8:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                      }
                                    },
                                    "id": 14337,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "times",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12590,
                                    "src": "27308:14:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_storage",
                                      "typeString": "uint256[3] storage ref"
                                    }
                                  },
                                  "id": 14339,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 14338,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "27323:1:57",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "27308:17:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "27302:23:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 14341,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "27301:25:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14342,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14003,
                              "src": "27330:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 14343,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "currentBoostedVotePeriodLimit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12574,
                            "src": "27330:38:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "27301:67:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 14358,
                        "nodeType": "IfStatement",
                        "src": "27297:209:57",
                        "trueBody": {
                          "id": 14357,
                          "nodeType": "Block",
                          "src": "27370:136:57",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 14350,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14345,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14003,
                                    "src": "27388:8:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                    }
                                  },
                                  "id": 14347,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "state",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12568,
                                  "src": "27388:14:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalState_$12514",
                                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14348,
                                    "name": "ProposalState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12514,
                                    "src": "27405:13:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                      "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                    }
                                  },
                                  "id": 14349,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "Executed",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "27405:22:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalState_$12514",
                                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                                  }
                                },
                                "src": "27388:39:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$12514",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                }
                              },
                              "id": 14351,
                              "nodeType": "ExpressionStatement",
                              "src": "27388:39:57"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 14355,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 14352,
                                  "name": "executionState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14040,
                                  "src": "27445:14:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14353,
                                    "name": "ExecutionState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12521,
                                    "src": "27462:14:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ExecutionState_$12521_$",
                                      "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                                    }
                                  },
                                  "id": 14354,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "BoostedTimeOut",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "27462:29:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "src": "27445:46:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                  "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                }
                              },
                              "id": 14356,
                              "nodeType": "ExpressionStatement",
                              "src": "27445:46:57"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ExecutionState_$12521",
                      "typeString": "enum GenesisProtocolLogic.ExecutionState"
                    },
                    "id": 14364,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 14361,
                      "name": "executionState",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14040,
                      "src": "27530:14:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ExecutionState_$12521",
                        "typeString": "enum GenesisProtocolLogic.ExecutionState"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 14362,
                        "name": "ExecutionState",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12521,
                        "src": "27548:14:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ExecutionState_$12521_$",
                          "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                        }
                      },
                      "id": 14363,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "None",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "27548:19:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ExecutionState_$12521",
                        "typeString": "enum GenesisProtocolLogic.ExecutionState"
                      }
                    },
                    "src": "27530:37:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 14475,
                  "nodeType": "IfStatement",
                  "src": "27526:1431:57",
                  "trueBody": {
                    "id": 14474,
                    "nodeType": "Block",
                    "src": "27569:1388:57",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 14375,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                  "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                },
                                "id": 14368,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 14365,
                                  "name": "executionState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14040,
                                  "src": "27588:14:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14366,
                                    "name": "ExecutionState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12521,
                                    "src": "27606:14:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ExecutionState_$12521_$",
                                      "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                                    }
                                  },
                                  "id": 14367,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "BoostedTimeOut",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "27606:29:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "src": "27588:47:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 14369,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "27587:49:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                  "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                },
                                "id": 14373,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 14370,
                                  "name": "executionState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14040,
                                  "src": "27657:14:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14371,
                                    "name": "ExecutionState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12521,
                                    "src": "27675:14:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ExecutionState_$12521_$",
                                      "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                                    }
                                  },
                                  "id": 14372,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "BoostedBarCrossed",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "27675:32:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                    "typeString": "enum GenesisProtocolLogic.ExecutionState"
                                  }
                                },
                                "src": "27657:50:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 14374,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "27656:52:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "27587:121:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 14438,
                        "nodeType": "IfStatement",
                        "src": "27583:938:57",
                        "trueBody": {
                          "id": 14437,
                          "nodeType": "Block",
                          "src": "27710:811:57",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 14387,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 14376,
                                    "name": "orgBoostedProposalsCnt",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12693,
                                    "src": "27728:22:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                      "typeString": "mapping(bytes32 => uint256)"
                                    }
                                  },
                                  "id": 14379,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14377,
                                      "name": "tmpProposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14016,
                                      "src": "27751:11:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal memory"
                                      }
                                    },
                                    "id": 14378,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "organizationId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12564,
                                    "src": "27751:26:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "27728:50:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 14385,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "27852:1:57",
                                      "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,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 14380,
                                        "name": "orgBoostedProposalsCnt",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12693,
                                        "src": "27797:22:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                          "typeString": "mapping(bytes32 => uint256)"
                                        }
                                      },
                                      "id": 14383,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 14381,
                                          "name": "tmpProposal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14016,
                                          "src": "27820:11:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                                            "typeString": "struct GenesisProtocolLogic.Proposal memory"
                                          }
                                        },
                                        "id": 14382,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "organizationId",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 12564,
                                        "src": "27820:26:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "27797:50:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 14384,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 15874,
                                    "src": "27797:54:57",
                                    "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": 14386,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "27797:57:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "27728:126:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 14388,
                              "nodeType": "ExpressionStatement",
                              "src": "27728:126:57"
                            },
                            {
                              "assignments": [
                                14390
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 14390,
                                  "name": "boostedProposals",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 14437,
                                  "src": "27969:24:57",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 14389,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "27969:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 14395,
                              "initialValue": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 14391,
                                  "name": "orgBoostedProposalsCnt",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12693,
                                  "src": "27996:22:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                    "typeString": "mapping(bytes32 => uint256)"
                                  }
                                },
                                "id": 14394,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14392,
                                    "name": "tmpProposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14016,
                                    "src": "28019:11:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Proposal memory"
                                    }
                                  },
                                  "id": 14393,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "organizationId",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12564,
                                  "src": "28019:26:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "27996:50:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "27969:77:57"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14398,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 14396,
                                  "name": "boostedProposals",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14390,
                                  "src": "28068:16:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 14397,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "28088:1:57",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "28068:21:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 14435,
                                "nodeType": "Block",
                                "src": "28194:313:57",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14412,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 14407,
                                        "name": "averageDownstakesOfBoosted",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14045,
                                        "src": "28216:26:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 14408,
                                          "name": "averagesDownstakesOfBoosted",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12701,
                                          "src": "28245:27:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                            "typeString": "mapping(bytes32 => uint256)"
                                          }
                                        },
                                        "id": 14411,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 14409,
                                            "name": "proposal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14003,
                                            "src": "28273:8:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                            }
                                          },
                                          "id": 14410,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "organizationId",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 12564,
                                          "src": "28273:23:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "28245:52:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "28216:81:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 14413,
                                    "nodeType": "ExpressionStatement",
                                    "src": "28216:81:57"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14433,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 14414,
                                          "name": "averagesDownstakesOfBoosted",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12701,
                                          "src": "28319:27:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                            "typeString": "mapping(bytes32 => uint256)"
                                          }
                                        },
                                        "id": 14417,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 14415,
                                            "name": "proposal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14003,
                                            "src": "28347:8:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                            }
                                          },
                                          "id": 14416,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "organizationId",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 12564,
                                          "src": "28347:23:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "28319:52:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 14432,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "components": [
                                            {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "baseExpression": {
                                                    "argumentTypes": null,
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "id": 14425,
                                                      "name": "proposal",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 14003,
                                                      "src": "28450:8:57",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                        "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                                      }
                                                    },
                                                    "id": 14426,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "stakes",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 12608,
                                                    "src": "28450:15:57",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                                      "typeString": "mapping(uint256 => uint256)"
                                                    }
                                                  },
                                                  "id": 14428,
                                                  "indexExpression": {
                                                    "argumentTypes": null,
                                                    "id": 14427,
                                                    "name": "NO",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12707,
                                                    "src": "28466:2:57",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "IndexAccess",
                                                  "src": "28450:19:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "arguments": [
                                                    {
                                                      "argumentTypes": null,
                                                      "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      },
                                                      "id": 14422,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "leftExpression": {
                                                        "argumentTypes": null,
                                                        "id": 14420,
                                                        "name": "boostedProposals",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 14390,
                                                        "src": "28426:16:57",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "nodeType": "BinaryOperation",
                                                      "operator": "+",
                                                      "rightExpression": {
                                                        "argumentTypes": null,
                                                        "hexValue": "31",
                                                        "id": 14421,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "28443:1:57",
                                                        "subdenomination": null,
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_rational_1_by_1",
                                                          "typeString": "int_const 1"
                                                        },
                                                        "value": "1"
                                                      },
                                                      "src": "28426:18:57",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "id": 14418,
                                                      "name": "averageDownstakesOfBoosted",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 14045,
                                                      "src": "28395:26:57",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "id": 14419,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "mul",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 15826,
                                                    "src": "28395:30:57",
                                                    "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": 14423,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "functionCall",
                                                  "lValueRequested": false,
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "28395:50:57",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 14424,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sub",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 15874,
                                                "src": "28395:54:57",
                                                "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": 14429,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "28395:75:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 14430,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "28394:77:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "/",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 14431,
                                          "name": "boostedProposals",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14390,
                                          "src": "28472:16:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "28394:94:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "28319:169:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 14434,
                                    "nodeType": "ExpressionStatement",
                                    "src": "28319:169:57"
                                  }
                                ]
                              },
                              "id": 14436,
                              "nodeType": "IfStatement",
                              "src": "28064:443:57",
                              "trueBody": {
                                "id": 14406,
                                "nodeType": "Block",
                                "src": "28091:97:57",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14404,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 14399,
                                          "name": "averagesDownstakesOfBoosted",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12701,
                                          "src": "28113:27:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                            "typeString": "mapping(bytes32 => uint256)"
                                          }
                                        },
                                        "id": 14402,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 14400,
                                            "name": "proposal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14003,
                                            "src": "28141:8:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                            }
                                          },
                                          "id": 14401,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "organizationId",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 12564,
                                          "src": "28141:23:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "28113:52:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 14403,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "28168:1:57",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "28113:56:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 14405,
                                    "nodeType": "ExpressionStatement",
                                    "src": "28113:56:57"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14440,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13994,
                              "src": "28568:11:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 14441,
                                "name": "organizations",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12697,
                                "src": "28593:13:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                  "typeString": "mapping(bytes32 => address)"
                                }
                              },
                              "id": 14444,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14442,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14003,
                                  "src": "28607:8:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 14443,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "organizationId",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12564,
                                "src": "28607:23:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "28593:38:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14445,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14003,
                                "src": "28645:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 14446,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "winningVote",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12570,
                              "src": "28645:20:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14447,
                              "name": "totalReputation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14020,
                              "src": "28679:15:57",
                              "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": 14439,
                            "name": "ExecuteProposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15089,
                            "src": "28539:15:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,address,uint256,uint256)"
                            }
                          },
                          "id": 14448,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28539:169:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14449,
                        "nodeType": "EmitStatement",
                        "src": "28534:174:57"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14451,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13994,
                              "src": "28745:11:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14452,
                              "name": "executionState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14040,
                              "src": "28758:14:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                "typeString": "enum GenesisProtocolLogic.ExecutionState"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_enum$_ExecutionState_$12521",
                                "typeString": "enum GenesisProtocolLogic.ExecutionState"
                              }
                            ],
                            "id": 14450,
                            "name": "GPExecuteProposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12667,
                            "src": "28727:17:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_enum$_ExecutionState_$12521_$returns$__$",
                              "typeString": "function (bytes32,enum GenesisProtocolLogic.ExecutionState)"
                            }
                          },
                          "id": 14453,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28727:46:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14454,
                        "nodeType": "EmitStatement",
                        "src": "28722:51:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14460,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13994,
                              "src": "28848:11:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14462,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14003,
                                    "src": "28865:8:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                    }
                                  },
                                  "id": 14463,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "winningVote",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12570,
                                  "src": "28865:20:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 14461,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "28861:3:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_int256_$",
                                  "typeString": "type(int256)"
                                },
                                "typeName": "int"
                              },
                              "id": 14464,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "28861:25:57",
                              "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": 14456,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14003,
                                    "src": "28812:8:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                    }
                                  },
                                  "id": 14457,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "callbacks",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12566,
                                  "src": "28812:18:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 14455,
                                "name": "ProposalExecuteInterface",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15194,
                                "src": "28787:24:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ProposalExecuteInterface_$15194_$",
                                  "typeString": "type(contract ProposalExecuteInterface)"
                                }
                              },
                              "id": 14458,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "28787:44:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ProposalExecuteInterface_$15194",
                                "typeString": "contract ProposalExecuteInterface"
                              }
                            },
                            "id": 14459,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "executeProposal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15193,
                            "src": "28787:60:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_int256_$returns$_t_bool_$",
                              "typeString": "function (bytes32,int256) external returns (bool)"
                            }
                          },
                          "id": 14465,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28787:100:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 14466,
                        "nodeType": "ExpressionStatement",
                        "src": "28787:100:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14472,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14467,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14003,
                              "src": "28901:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 14469,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "daoBounty",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12580,
                            "src": "28901:18:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14470,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14003,
                              "src": "28922:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 14471,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "daoBountyRemain",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12578,
                            "src": "28922:24:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "28901:45:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14473,
                        "nodeType": "ExpressionStatement",
                        "src": "28901:45:57"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ProposalState_$12514",
                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                    },
                    "id": 14480,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 14476,
                        "name": "tmpProposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14016,
                        "src": "28970:11:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_memory_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal memory"
                        }
                      },
                      "id": 14477,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "state",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12568,
                      "src": "28970:17:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ProposalState_$12514",
                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 14478,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14003,
                        "src": "28991:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 14479,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "state",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12568,
                      "src": "28991:14:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ProposalState_$12514",
                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                      }
                    },
                    "src": "28970:35:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 14488,
                  "nodeType": "IfStatement",
                  "src": "28966:111:57",
                  "trueBody": {
                    "id": 14487,
                    "nodeType": "Block",
                    "src": "29007:70:57",
                    "statements": [
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14482,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13994,
                              "src": "29038:11:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14483,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14003,
                                "src": "29051:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 14484,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "state",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12568,
                              "src": "29051:14:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalState_$12514",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_enum$_ProposalState_$12514",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              }
                            ],
                            "id": 14481,
                            "name": "StateChange",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12661,
                            "src": "29026:11:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_enum$_ProposalState_$12514_$returns$__$",
                              "typeString": "function (bytes32,enum GenesisProtocolLogic.ProposalState)"
                            }
                          },
                          "id": 14485,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "29026:40:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14486,
                        "nodeType": "EmitStatement",
                        "src": "29021:45:57"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_ExecutionState_$12521",
                          "typeString": "enum GenesisProtocolLogic.ExecutionState"
                        },
                        "id": 14492,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 14489,
                          "name": "executionState",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14040,
                          "src": "29094:14:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ExecutionState_$12521",
                            "typeString": "enum GenesisProtocolLogic.ExecutionState"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 14490,
                            "name": "ExecutionState",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12521,
                            "src": "29112:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_ExecutionState_$12521_$",
                              "typeString": "type(enum GenesisProtocolLogic.ExecutionState)"
                            }
                          },
                          "id": 14491,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "None",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "29112:19:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ExecutionState_$12521",
                            "typeString": "enum GenesisProtocolLogic.ExecutionState"
                          }
                        },
                        "src": "29094:37:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 14493,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "29093:39:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 14001,
                  "id": 14494,
                  "nodeType": "Return",
                  "src": "29086:46:57"
                }
              ]
            },
            "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": 14496,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 13997,
                    "name": "_proposalId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13994,
                    "src": "22783:11:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 13998,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 13996,
                  "name": "votable",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 12756,
                  "src": "22775:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "22775:20:57"
              }
            ],
            "name": "_execute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13995,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13994,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 14496,
                  "src": "22745:19:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13993,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "22745:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "22744:21:57"
            },
            "returnParameters": {
              "id": 14001,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14000,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 14496,
                  "src": "22804:4:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 13999,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "22804:4:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "22803:6:57"
            },
            "scope": 15047,
            "src": "22727:6412:57",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 14681,
              "nodeType": "Block",
              "src": "29520:1650:57",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 14516,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14512,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 14510,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14500,
                            "src": "29572:5:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 14511,
                            "name": "NUM_OF_CHOICES",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12704,
                            "src": "29581:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "29572:23:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14515,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 14513,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14500,
                            "src": "29599:5:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 14514,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "29607:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "29599:9:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "29572:36:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "77726f6e6720766f74652076616c7565",
                        "id": 14517,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "29610:18:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d82d70f2dacf08ad4e0d64af0a4b6b4468b32b18c064b4e753cdfba3c6e5a6a8",
                          "typeString": "literal_string \"wrong vote value\""
                        },
                        "value": "wrong vote value"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d82d70f2dacf08ad4e0d64af0a4b6b4468b32b18c064b4e753cdfba3c6e5a6a8",
                          "typeString": "literal_string \"wrong vote value\""
                        }
                      ],
                      "id": 14509,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "29564:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 14518,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "29564:65:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14519,
                  "nodeType": "ExpressionStatement",
                  "src": "29564:65:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 14523,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 14521,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14502,
                          "src": "29647:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 14522,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "29657:1:57",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "29647:11:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "7374616b696e6720616d6f756e742073686f756c64206265203e30",
                        "id": 14524,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "29660:29:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_91d4369e2212c0af5bece6ece1fcbdc47c9df9cbc0c01f068a62871681a0f61a",
                          "typeString": "literal_string \"staking amount should be >0\""
                        },
                        "value": "staking amount should be >0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_91d4369e2212c0af5bece6ece1fcbdc47c9df9cbc0c01f068a62871681a0f61a",
                          "typeString": "literal_string \"staking amount should be >0\""
                        }
                      ],
                      "id": 14520,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "29639:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 14525,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "29639:51:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14526,
                  "nodeType": "ExpressionStatement",
                  "src": "29639:51:57"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14528,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14498,
                        "src": "29714:11:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 14527,
                      "name": "_execute",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14496,
                      "src": "29705:8:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (bytes32) returns (bool)"
                      }
                    },
                    "id": 14529,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "29705:21:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 14533,
                  "nodeType": "IfStatement",
                  "src": "29701:63:57",
                  "trueBody": {
                    "id": 14532,
                    "nodeType": "Block",
                    "src": "29728:36:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 14530,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "29749:4:57",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 14508,
                        "id": 14531,
                        "nodeType": "Return",
                        "src": "29742:11:57"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    14535
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14535,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 14681,
                      "src": "29773:25:57",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 14534,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12613,
                        "src": "29773:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14539,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 14536,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12689,
                      "src": "29801:9:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$12613_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                      }
                    },
                    "id": 14538,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 14537,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14498,
                      "src": "29811:11:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "29801:22:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$12613_storage",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "29773:50:57"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 14552,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$12514",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 14544,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14540,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14535,
                              "src": "29839:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 14541,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12568,
                            "src": "29839:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14542,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12514,
                              "src": "29857:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 14543,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "PreBoosted",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "29857:24:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "29839:42:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 14545,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "29838:44:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$12514",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 14550,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14546,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14535,
                              "src": "29899:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 14547,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12568,
                            "src": "29899:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14548,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12514,
                              "src": "29917:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 14549,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Queued",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "29917:20:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "29899:38:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 14551,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "29898:40:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "29838:100:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 14556,
                  "nodeType": "IfStatement",
                  "src": "29834:143:57",
                  "trueBody": {
                    "id": 14555,
                    "nodeType": "Block",
                    "src": "29940:37:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 14553,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "29961:5:57",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 14508,
                        "id": 14554,
                        "nodeType": "Return",
                        "src": "29954:12:57"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    14558
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14558,
                      "name": "staker",
                      "nodeType": "VariableDeclaration",
                      "scope": 14681,
                      "src": "30055:21:57",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Staker"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 14557,
                        "name": "Staker",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12562,
                        "src": "30055:6:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Staker"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14563,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 14559,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14535,
                        "src": "30079:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 14560,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "stakers",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12612,
                      "src": "30079:16:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Staker_$12562_storage_$",
                        "typeString": "mapping(address => struct GenesisProtocolLogic.Staker storage ref)"
                      }
                    },
                    "id": 14562,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 14561,
                      "name": "_staker",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14504,
                      "src": "30096:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "30079:25:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Staker_$12562_storage",
                      "typeString": "struct GenesisProtocolLogic.Staker storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "30055:49:57"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 14574,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14567,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14564,
                              "name": "staker",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14558,
                              "src": "30119:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                              }
                            },
                            "id": 14565,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12559,
                            "src": "30119:13:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 14566,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "30135:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "30119:17:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 14568,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "30118:19:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14572,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14569,
                              "name": "staker",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14558,
                              "src": "30142:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                              }
                            },
                            "id": 14570,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "vote",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12557,
                            "src": "30142:11:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 14571,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14500,
                            "src": "30157:5:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "30142:20:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 14573,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "30141:22:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "30118:45:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 14578,
                  "nodeType": "IfStatement",
                  "src": "30114:88:57",
                  "trueBody": {
                    "id": 14577,
                    "nodeType": "Block",
                    "src": "30165:37:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 14575,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "30186:5:57",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 14508,
                        "id": 14576,
                        "nodeType": "Return",
                        "src": "30179:12:57"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    14580
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14580,
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 14681,
                      "src": "30212:14:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14579,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "30212:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14582,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 14581,
                    "name": "_amount",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14502,
                    "src": "30229:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "30212:24:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 14586,
                            "name": "_staker",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14504,
                            "src": "30280:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 14588,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16842,
                                "src": "30297:4:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_GenesisProtocolLogic_$15047",
                                  "typeString": "contract GenesisProtocolLogic"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_GenesisProtocolLogic_$15047",
                                  "typeString": "contract GenesisProtocolLogic"
                                }
                              ],
                              "id": 14587,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "30289:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 14589,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "30289:13:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 14590,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14580,
                            "src": "30304:6:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 14584,
                            "name": "stakingToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12714,
                            "src": "30254:12:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$16748",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 14585,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 16710,
                          "src": "30254:25:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256) external returns (bool)"
                          }
                        },
                        "id": 14591,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "30254:57:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6661696c207472616e736665722066726f6d207374616b6572",
                        "id": 14592,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "30313:27:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ad0934b2b17c5a144168f7c3b41e6e295357361c44445f6c875b7de168a8b283",
                          "typeString": "literal_string \"fail transfer from staker\""
                        },
                        "value": "fail transfer from staker"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ad0934b2b17c5a144168f7c3b41e6e295357361c44445f6c875b7de168a8b283",
                          "typeString": "literal_string \"fail transfer from staker\""
                        }
                      ],
                      "id": 14583,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "30246:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 14593,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "30246:95:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14594,
                  "nodeType": "ExpressionStatement",
                  "src": "30246:95:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14603,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 14595,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14535,
                        "src": "30351:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                        }
                      },
                      "id": 14597,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalStakes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12582,
                      "src": "30351:20:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 14601,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14580,
                          "src": "30399:6:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 14598,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14535,
                            "src": "30374:8:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                            }
                          },
                          "id": 14599,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "totalStakes",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12582,
                          "src": "30374:20:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14600,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 15898,
                        "src": "30374:24:57",
                        "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": 14602,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "30374:32:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "30351:55:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 14604,
                  "nodeType": "ExpressionStatement",
                  "src": "30351:55:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14613,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 14605,
                        "name": "staker",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14558,
                        "src": "30447:6:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                        }
                      },
                      "id": 14607,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "amount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12559,
                      "src": "30447:13:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 14611,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14580,
                          "src": "30481:6:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 14608,
                            "name": "staker",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14558,
                            "src": "30463:6:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                            }
                          },
                          "id": 14609,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "amount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12559,
                          "src": "30463:13:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14610,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 15898,
                        "src": "30463:17:57",
                        "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": 14612,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "30463:25:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "30447:41:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 14614,
                  "nodeType": "ExpressionStatement",
                  "src": "30447:41:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 14619,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 14616,
                            "name": "staker",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14558,
                            "src": "30631:6:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                            }
                          },
                          "id": 14617,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "amount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12559,
                          "src": "30631:13:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3078313030303030303030303030303030303030303030303030303030303030303030",
                          "id": 14618,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "30648:35:57",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1",
                            "typeString": "int_const 3402...(31 digits omitted)...1456"
                          },
                          "value": "0x100000000000000000000000000000000"
                        },
                        "src": "30631:52:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "7374616b696e6720616d6f756e7420697320746f6f2068696768",
                        "id": 14620,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "30685:28:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c08e8b6b6438b031b9203bfd11dc79b9738fb9df8efea56d562c5a29a6e1f3ee",
                          "typeString": "literal_string \"staking amount is too high\""
                        },
                        "value": "staking amount is too high"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c08e8b6b6438b031b9203bfd11dc79b9738fb9df8efea56d562c5a29a6e1f3ee",
                          "typeString": "literal_string \"staking amount is too high\""
                        }
                      ],
                      "id": 14615,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "30623:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 14621,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "30623:91:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14622,
                  "nodeType": "ExpressionStatement",
                  "src": "30623:91:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 14627,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 14624,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14535,
                            "src": "30732:8:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                            }
                          },
                          "id": 14625,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "totalStakes",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12582,
                          "src": "30732:20:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3078313030303030303030303030303030303030303030303030303030303030303030",
                          "id": 14626,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "30756:35:57",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1",
                            "typeString": "int_const 3402...(31 digits omitted)...1456"
                          },
                          "value": "0x100000000000000000000000000000000"
                        },
                        "src": "30732:59:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "746f74616c207374616b657320697320746f6f2068696768",
                        "id": 14628,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "30793:26:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e3ddc8a760353c6cb4764665e8783f172d91728d9fd6e3fa17211593e37c1469",
                          "typeString": "literal_string \"total stakes is too high\""
                        },
                        "value": "total stakes is too high"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e3ddc8a760353c6cb4764665e8783f172d91728d9fd6e3fa17211593e37c1469",
                          "typeString": "literal_string \"total stakes is too high\""
                        }
                      ],
                      "id": 14623,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "30724:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 14629,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "30724:96:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14630,
                  "nodeType": "ExpressionStatement",
                  "src": "30724:96:57"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 14633,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 14631,
                      "name": "_vote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14500,
                      "src": "30835:5:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 14632,
                      "name": "YES",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12710,
                      "src": "30844:3:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "30835:12:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 14645,
                  "nodeType": "IfStatement",
                  "src": "30831:98:57",
                  "trueBody": {
                    "id": 14644,
                    "nodeType": "Block",
                    "src": "30849:80:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14642,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14634,
                              "name": "staker",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14558,
                              "src": "30863:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                              }
                            },
                            "id": 14636,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount4Bounty",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12561,
                            "src": "30863:20:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 14640,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14580,
                                "src": "30911:6:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14637,
                                  "name": "staker",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14558,
                                  "src": "30886:6:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                                  }
                                },
                                "id": 14638,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amount4Bounty",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12561,
                                "src": "30886:20:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 14639,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15898,
                              "src": "30886:24:57",
                              "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": 14641,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "30886:32:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "30863:55:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14643,
                        "nodeType": "ExpressionStatement",
                        "src": "30863:55:57"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14650,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 14646,
                        "name": "staker",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14558,
                        "src": "30938:6:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Staker_$12562_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Staker storage pointer"
                        }
                      },
                      "id": 14648,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "vote",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12557,
                      "src": "30938:11:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 14649,
                      "name": "_vote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14500,
                      "src": "30952:5:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "30938:19:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 14651,
                  "nodeType": "ExpressionStatement",
                  "src": "30938:19:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14664,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 14652,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14535,
                          "src": "30968:8:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                          }
                        },
                        "id": 14655,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "stakes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12608,
                        "src": "30968:15:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 14656,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 14654,
                        "name": "_vote",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14500,
                        "src": "30984:5:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "30968:22:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14659,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14535,
                              "src": "31004:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 14660,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "stakes",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12608,
                            "src": "31004:15:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 14662,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 14661,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14500,
                            "src": "31020:5:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "31004:22:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 14657,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14580,
                          "src": "30993:6:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14658,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 15898,
                        "src": "30993:10:57",
                        "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": 14663,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "30993:34:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "30968:59:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 14665,
                  "nodeType": "ExpressionStatement",
                  "src": "30968:59:57"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14667,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14498,
                        "src": "31048:11:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 14668,
                          "name": "organizations",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12697,
                          "src": "31061:13:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                            "typeString": "mapping(bytes32 => address)"
                          }
                        },
                        "id": 14671,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 14669,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14535,
                            "src": "31075:8:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                            }
                          },
                          "id": 14670,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "organizationId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12564,
                          "src": "31075:23:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "31061:38:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14672,
                        "name": "_staker",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14504,
                        "src": "31101:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14673,
                        "name": "_vote",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14500,
                        "src": "31110:5:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14674,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14502,
                        "src": "31117:7:57",
                        "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": 14666,
                      "name": "Stake",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12625,
                      "src": "31042:5:57",
                      "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": 14675,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "31042:83:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14676,
                  "nodeType": "EmitStatement",
                  "src": "31037:88:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14678,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14498,
                        "src": "31151:11:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 14677,
                      "name": "_execute",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14496,
                      "src": "31142:8:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (bytes32) returns (bool)"
                      }
                    },
                    "id": 14679,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "31142:21:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 14508,
                  "id": 14680,
                  "nodeType": "Return",
                  "src": "31135:28:57"
                }
              ]
            },
            "documentation": "@dev staking function\n@param _proposalId id of the proposal\n@param _vote  NO(2) or YES(1).\n@param _amount the betting amount\n@return bool true - the proposal has been executed\n             false - otherwise.",
            "id": 14682,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_stake",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14505,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14498,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 14682,
                  "src": "29427:19:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14497,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "29427:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14500,
                  "name": "_vote",
                  "nodeType": "VariableDeclaration",
                  "scope": 14682,
                  "src": "29448:13:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14499,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "29448:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14502,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 14682,
                  "src": "29463:15:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14501,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "29463:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14504,
                  "name": "_staker",
                  "nodeType": "VariableDeclaration",
                  "scope": 14682,
                  "src": "29480:15:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14503,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "29480:7:57",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "29426:70:57"
            },
            "returnParameters": {
              "id": 14508,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14507,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 14682,
                  "src": "29514:4:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14506,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "29514:4:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "29513:6:57"
            },
            "scope": 15047,
            "src": "29411:1759:57",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 14976,
              "nodeType": "Block",
              "src": "32020:2776:57",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 14702,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14698,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 14696,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14688,
                            "src": "32038:5:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 14697,
                            "name": "NUM_OF_CHOICES",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12704,
                            "src": "32047:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "32038:23:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14701,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 14699,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14688,
                            "src": "32065:5:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 14700,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "32073:1:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "32065:9:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "32038:36:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30203c205f766f7465203c3d2032",
                        "id": 14703,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "32076:16:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6c167076fd1b36c01702a4c4b1e40be23cd6e9623d657cdb939ad9f0e6a548db",
                          "typeString": "literal_string \"0 < _vote <= 2\""
                        },
                        "value": "0 < _vote <= 2"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6c167076fd1b36c01702a4c4b1e40be23cd6e9623d657cdb939ad9f0e6a548db",
                          "typeString": "literal_string \"0 < _vote <= 2\""
                        }
                      ],
                      "id": 14695,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "32030:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 14704,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32030:63:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14705,
                  "nodeType": "ExpressionStatement",
                  "src": "32030:63:57"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14707,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14684,
                        "src": "32116:11:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 14706,
                      "name": "_execute",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14496,
                      "src": "32107:8:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (bytes32) returns (bool)"
                      }
                    },
                    "id": 14708,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32107:21:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 14712,
                  "nodeType": "IfStatement",
                  "src": "32103:63:57",
                  "trueBody": {
                    "id": 14711,
                    "nodeType": "Block",
                    "src": "32130:36:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 14709,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "32151:4:57",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 14694,
                        "id": 14710,
                        "nodeType": "Return",
                        "src": "32144:11:57"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    14714
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14714,
                      "name": "params",
                      "nodeType": "VariableDeclaration",
                      "scope": 14976,
                      "src": "32176:24:57",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$12548_memory_ptr",
                        "typeString": "struct GenesisProtocolLogic.Parameters"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 14713,
                        "name": "Parameters",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12548,
                        "src": "32176:10:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$12548_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Parameters"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14721,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 14715,
                      "name": "parameters",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12685,
                      "src": "32203:10:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$12548_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Parameters storage ref)"
                      }
                    },
                    "id": 14720,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 14716,
                          "name": "proposals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12689,
                          "src": "32214:9:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$12613_storage_$",
                            "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                          }
                        },
                        "id": 14718,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 14717,
                          "name": "_proposalId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14684,
                          "src": "32224:11:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "32214:22:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage",
                          "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                        }
                      },
                      "id": 14719,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "paramsHash",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12576,
                      "src": "32214:33:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "32203:45:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Parameters_$12548_storage",
                      "typeString": "struct GenesisProtocolLogic.Parameters storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "32176:72:57"
                },
                {
                  "assignments": [
                    14723
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14723,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 14976,
                      "src": "32258:25:57",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 14722,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12613,
                        "src": "32258:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14727,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 14724,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12689,
                      "src": "32286:9:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$12613_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                      }
                    },
                    "id": 14726,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 14725,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14684,
                      "src": "32296:11:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "32286:22:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$12613_storage",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "32258:50:57"
                },
                {
                  "assignments": [
                    14729
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14729,
                      "name": "reputation",
                      "nodeType": "VariableDeclaration",
                      "scope": 14976,
                      "src": "32365:18:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14728,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "32365:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14738,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14735,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14686,
                        "src": "32451:6:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14736,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14684,
                        "src": "32459:11:57",
                        "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": 14731,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14723,
                              "src": "32418:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 14732,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "callbacks",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12566,
                            "src": "32418:18:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 14730,
                          "name": "VotingMachineCallbacksInterface",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15258,
                          "src": "32386:31:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_VotingMachineCallbacksInterface_$15258_$",
                            "typeString": "type(contract VotingMachineCallbacksInterface)"
                          }
                        },
                        "id": 14733,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "32386:51:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VotingMachineCallbacksInterface_$15258",
                          "typeString": "contract VotingMachineCallbacksInterface"
                        }
                      },
                      "id": 14734,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "reputationOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15248,
                      "src": "32386:64:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$returns$_t_uint256_$",
                        "typeString": "function (address,bytes32) view external returns (uint256)"
                      }
                    },
                    "id": 14737,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32386:85:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "32365:106:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 14742,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 14740,
                          "name": "reputation",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14729,
                          "src": "32489:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 14741,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "32502:1:57",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "32489:14:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "5f766f746572206d75737420686176652072657075746174696f6e",
                        "id": 14743,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "32505:29:57",
                        "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": 14739,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "32481:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 14744,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32481:54:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14745,
                  "nodeType": "ExpressionStatement",
                  "src": "32481:54:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 14749,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 14747,
                          "name": "reputation",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14729,
                          "src": "32553:10:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 14748,
                          "name": "_rep",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14690,
                          "src": "32567:4:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "32553:18:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "72657075746174696f6e203e3d205f726570",
                        "id": 14750,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "32573:20:57",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_854a896e4ac217d1bc6f5707e5523361ed247e9f3d2bb1c843a9e088d13a9e72",
                          "typeString": "literal_string \"reputation >= _rep\""
                        },
                        "value": "reputation >= _rep"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_854a896e4ac217d1bc6f5707e5523361ed247e9f3d2bb1c843a9e088d13a9e72",
                          "typeString": "literal_string \"reputation >= _rep\""
                        }
                      ],
                      "id": 14746,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "32545:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 14751,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32545:49:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14752,
                  "nodeType": "ExpressionStatement",
                  "src": "32545:49:57"
                },
                {
                  "assignments": [
                    14754
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14754,
                      "name": "rep",
                      "nodeType": "VariableDeclaration",
                      "scope": 14976,
                      "src": "32604:11:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14753,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "32604:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14756,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 14755,
                    "name": "_rep",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14690,
                    "src": "32618:4:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "32604:18:57"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 14759,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 14757,
                      "name": "rep",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14754,
                      "src": "32636:3:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 14758,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "32643:1:57",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "32636:8:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 14765,
                  "nodeType": "IfStatement",
                  "src": "32632:55:57",
                  "trueBody": {
                    "id": 14764,
                    "nodeType": "Block",
                    "src": "32646:41:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14762,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 14760,
                            "name": "rep",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14754,
                            "src": "32660:3:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 14761,
                            "name": "reputation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14729,
                            "src": "32666:10:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "32660:16:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14763,
                        "nodeType": "ExpressionStatement",
                        "src": "32660:16:57"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 14772,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 14766,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14723,
                            "src": "32758:8:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                            }
                          },
                          "id": 14767,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "voters",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12604,
                          "src": "32758:15:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$12555_storage_$",
                            "typeString": "mapping(address => struct GenesisProtocolLogic.Voter storage ref)"
                          }
                        },
                        "id": 14769,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 14768,
                          "name": "_voter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14686,
                          "src": "32774:6:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "32758:23:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Voter_$12555_storage",
                          "typeString": "struct GenesisProtocolLogic.Voter storage ref"
                        }
                      },
                      "id": 14770,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "reputation",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12552,
                      "src": "32758:34:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 14771,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "32796:1:57",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "32758:39:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 14776,
                  "nodeType": "IfStatement",
                  "src": "32754:82:57",
                  "trueBody": {
                    "id": 14775,
                    "nodeType": "Block",
                    "src": "32799:37:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 14773,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "32820:5:57",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 14694,
                        "id": 14774,
                        "nodeType": "Return",
                        "src": "32813:12:57"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14789,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 14777,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14723,
                          "src": "32875:8:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                          }
                        },
                        "id": 14780,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "votes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12596,
                        "src": "32875:14:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 14781,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 14779,
                        "name": "_vote",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14688,
                        "src": "32890:5:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "32875:21:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14784,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14723,
                              "src": "32907:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 14785,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "votes",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12596,
                            "src": "32907:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 14787,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 14786,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14688,
                            "src": "32922:5:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "32907:21:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 14782,
                          "name": "rep",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14754,
                          "src": "32899:3:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14783,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 15898,
                        "src": "32899:7:57",
                        "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": 14788,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "32899:30:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "32875:54:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 14790,
                  "nodeType": "ExpressionStatement",
                  "src": "32875:54:57"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 14819,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14800,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14791,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14723,
                                "src": "33087:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 14792,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "votes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12596,
                              "src": "33087:14:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 14794,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 14793,
                              "name": "_vote",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14688,
                              "src": "33102:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "33087:21:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14795,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14723,
                                "src": "33111:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 14796,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "votes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12596,
                              "src": "33111:14:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 14799,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14797,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14723,
                                "src": "33126:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 14798,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "winningVote",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12570,
                              "src": "33126:20:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "33111:36:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "33087:60:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 14801,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "33086:62:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 14817,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14811,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14802,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14723,
                                      "src": "33166:8:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                      }
                                    },
                                    "id": 14803,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "votes",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12596,
                                    "src": "33166:14:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 14805,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 14804,
                                    "name": "NO",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12707,
                                    "src": "33181:2:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "33166:18:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14806,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14723,
                                      "src": "33188:8:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                      }
                                    },
                                    "id": 14807,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "votes",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12596,
                                    "src": "33188:14:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 14810,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14808,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14723,
                                      "src": "33203:8:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                      }
                                    },
                                    "id": 14809,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "winningVote",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12570,
                                    "src": "33203:20:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "33188:36:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "33166:58:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 14812,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "33165:60:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 14816,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14813,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14723,
                                "src": "33241:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 14814,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "winningVote",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12570,
                              "src": "33241:20:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 14815,
                              "name": "YES",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12710,
                              "src": "33265:3:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "33241:27:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "33165:103:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 14818,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "33164:105:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "33086:183:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 14885,
                  "nodeType": "IfStatement",
                  "src": "33082:937:57",
                  "trueBody": {
                    "id": 14884,
                    "nodeType": "Block",
                    "src": "33271:748:57",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 14846,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 14840,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_ProposalState_$12514",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              },
                              "id": 14824,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14820,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14723,
                                  "src": "33289:8:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                    "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                  }
                                },
                                "id": 14821,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "state",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12568,
                                "src": "33289:14:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$12514",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14822,
                                  "name": "ProposalState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12514,
                                  "src": "33307:13:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                    "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                  }
                                },
                                "id": 14823,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "Boosted",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "33307:21:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$12514",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                }
                              },
                              "src": "33289:39:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14838,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 14830,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 14825,
                                          "name": "now",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 16784,
                                          "src": "33408:3:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 14826,
                                              "name": "proposal",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 14723,
                                              "src": "33414:8:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                              }
                                            },
                                            "id": 14827,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "times",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 12590,
                                            "src": "33414:14:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_uint256_$3_storage",
                                              "typeString": "uint256[3] storage ref"
                                            }
                                          },
                                          "id": 14829,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "31",
                                            "id": 14828,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "33429:1:57",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "33414:17:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "33408:23:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 14831,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "33407:25:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 14836,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 14832,
                                            "name": "params",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14714,
                                            "src": "33437:6:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Parameters_$12548_memory_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Parameters memory"
                                            }
                                          },
                                          "id": 14833,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "boostedVotePeriodLimit",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 12527,
                                          "src": "33437:29:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 14834,
                                            "name": "params",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 14714,
                                            "src": "33469:6:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Parameters_$12548_memory_ptr",
                                              "typeString": "struct GenesisProtocolLogic.Parameters memory"
                                            }
                                          },
                                          "id": 14835,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "quietEndingPeriod",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 12535,
                                          "src": "33469:24:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "33437:56:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 14837,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "33436:58:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "33407:87:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 14839,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "33406:89:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "33289:206:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            },
                            "id": 14845,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14841,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14723,
                                "src": "33514:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 14842,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "state",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12568,
                              "src": "33514:14:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalState_$12514",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14843,
                                "name": "ProposalState",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12514,
                                "src": "33532:13:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                  "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                }
                              },
                              "id": 14844,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "QuietEndingPeriod",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "33532:31:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalState_$12514",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              }
                            },
                            "src": "33514:49:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "33289:274:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 14877,
                        "nodeType": "IfStatement",
                        "src": "33285:682:57",
                        "trueBody": {
                          "id": 14876,
                          "nodeType": "Block",
                          "src": "33565:402:57",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_ProposalState_$12514",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                },
                                "id": 14851,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14847,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14723,
                                    "src": "33623:8:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                    }
                                  },
                                  "id": 14848,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "state",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12568,
                                  "src": "33623:14:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalState_$12514",
                                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14849,
                                    "name": "ProposalState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12514,
                                    "src": "33641:13:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                      "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                    }
                                  },
                                  "id": 14850,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "QuietEndingPeriod",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "33641:31:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalState_$12514",
                                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                                  }
                                },
                                "src": "33623:49:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 14867,
                              "nodeType": "IfStatement",
                              "src": "33619:231:57",
                              "trueBody": {
                                "id": 14866,
                                "nodeType": "Block",
                                "src": "33674:176:57",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14857,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 14852,
                                          "name": "proposal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14723,
                                          "src": "33696:8:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                          }
                                        },
                                        "id": 14854,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "currentBoostedVotePeriodLimit",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 12574,
                                        "src": "33696:38:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 14855,
                                          "name": "params",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14714,
                                          "src": "33737:6:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Parameters_$12548_memory_ptr",
                                            "typeString": "struct GenesisProtocolLogic.Parameters memory"
                                          }
                                        },
                                        "id": 14856,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "quietEndingPeriod",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 12535,
                                        "src": "33737:24:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "33696:65:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 14858,
                                    "nodeType": "ExpressionStatement",
                                    "src": "33696:65:57"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14864,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 14859,
                                          "name": "proposal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14723,
                                          "src": "33783:8:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                          }
                                        },
                                        "id": 14861,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "state",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 12568,
                                        "src": "33783:14:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_ProposalState_$12514",
                                          "typeString": "enum GenesisProtocolLogic.ProposalState"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 14862,
                                          "name": "ProposalState",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12514,
                                          "src": "33800:13:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                            "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                          }
                                        },
                                        "id": 14863,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "QuietEndingPeriod",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "33800:31:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_ProposalState_$12514",
                                          "typeString": "enum GenesisProtocolLogic.ProposalState"
                                        }
                                      },
                                      "src": "33783:48:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ProposalState_$12514",
                                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                                      }
                                    },
                                    "id": 14865,
                                    "nodeType": "ExpressionStatement",
                                    "src": "33783:48:57"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 14874,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14868,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14723,
                                      "src": "33929:8:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                      }
                                    },
                                    "id": 14871,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "times",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12590,
                                    "src": "33929:14:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$3_storage",
                                      "typeString": "uint256[3] storage ref"
                                    }
                                  },
                                  "id": 14872,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 14870,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "33944:1:57",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "33929:17:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 14873,
                                  "name": "now",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16784,
                                  "src": "33949:3:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "33929:23:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 14875,
                              "nodeType": "ExpressionStatement",
                              "src": "33929:23:57"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14882,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14878,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14723,
                              "src": "33980:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 14880,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "winningVote",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12570,
                            "src": "33980:20:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 14881,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14688,
                            "src": "34003:5:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "33980:28:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14883,
                        "nodeType": "ExpressionStatement",
                        "src": "33980:28:57"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14909,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 14886,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14723,
                          "src": "34028:8:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                            "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                          }
                        },
                        "id": 14889,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "voters",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 12604,
                        "src": "34028:15:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$12555_storage_$",
                          "typeString": "mapping(address => struct GenesisProtocolLogic.Voter storage ref)"
                        }
                      },
                      "id": 14890,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 14888,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14686,
                        "src": "34044:6:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "34028:23:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Voter_$12555_storage",
                        "typeString": "struct GenesisProtocolLogic.Voter storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 14892,
                          "name": "rep",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14754,
                          "src": "34086:3:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 14893,
                          "name": "_vote",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14688,
                          "src": "34109:5:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 14906,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_enum$_ProposalState_$12514",
                                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                                    },
                                    "id": 14898,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 14894,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14723,
                                        "src": "34141:8:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                        }
                                      },
                                      "id": 14895,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "state",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 12568,
                                      "src": "34141:14:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ProposalState_$12514",
                                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 14896,
                                        "name": "ProposalState",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12514,
                                        "src": "34159:13:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                          "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                        }
                                      },
                                      "id": 14897,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "PreBoosted",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "34159:24:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ProposalState_$12514",
                                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                                      }
                                    },
                                    "src": "34141:42:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 14899,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "34140:44:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_enum$_ProposalState_$12514",
                                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                                    },
                                    "id": 14904,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 14900,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14723,
                                        "src": "34189:8:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                          "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                        }
                                      },
                                      "id": 14901,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "state",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 12568,
                                      "src": "34189:14:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ProposalState_$12514",
                                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 14902,
                                        "name": "ProposalState",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12514,
                                        "src": "34207:13:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                          "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                        }
                                      },
                                      "id": 14903,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "Queued",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "34207:20:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ProposalState_$12514",
                                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                                      }
                                    },
                                    "src": "34189:38:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 14905,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "34188:40:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "34140:88:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 14907,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "34139:90:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 14891,
                        "name": "Voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12555,
                        "src": "34054:5:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Voter_$12555_storage_ptr_$",
                          "typeString": "type(struct GenesisProtocolLogic.Voter storage pointer)"
                        }
                      },
                      "id": 14908,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [
                        "reputation",
                        "vote",
                        "preBoosted"
                      ],
                      "nodeType": "FunctionCall",
                      "src": "34054:186:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Voter_$12555_memory",
                        "typeString": "struct GenesisProtocolLogic.Voter memory"
                      }
                    },
                    "src": "34028:212:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Voter_$12555_storage",
                      "typeString": "struct GenesisProtocolLogic.Voter storage ref"
                    }
                  },
                  "id": 14910,
                  "nodeType": "ExpressionStatement",
                  "src": "34028:212:57"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 14923,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$12514",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 14915,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14911,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14723,
                              "src": "34255:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 14912,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12568,
                            "src": "34255:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14913,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12514,
                              "src": "34273:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 14914,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "PreBoosted",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "34273:24:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "34255:42:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 14916,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "34254:44:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalState_$12514",
                            "typeString": "enum GenesisProtocolLogic.ProposalState"
                          },
                          "id": 14921,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14917,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14723,
                              "src": "34303:8:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                              }
                            },
                            "id": 14918,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "state",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12568,
                            "src": "34303:14:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14919,
                              "name": "ProposalState",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12514,
                              "src": "34321:13:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                              }
                            },
                            "id": 14920,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Queued",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "34321:20:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalState_$12514",
                              "typeString": "enum GenesisProtocolLogic.ProposalState"
                            }
                          },
                          "src": "34303:38:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 14922,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "34302:40:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "34254:88:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 14960,
                  "nodeType": "IfStatement",
                  "src": "34250:402:57",
                  "trueBody": {
                    "id": 14959,
                    "nodeType": "Block",
                    "src": "34344:308:57",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 14936,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14924,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14723,
                                "src": "34358:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 14927,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "preBoostedVotes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12600,
                              "src": "34358:24:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 14928,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 14926,
                              "name": "_vote",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14688,
                              "src": "34383:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "34358:31:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14931,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14723,
                                    "src": "34400:8:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                    }
                                  },
                                  "id": 14932,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "preBoostedVotes",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12600,
                                  "src": "34400:24:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 14934,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 14933,
                                  "name": "_vote",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14688,
                                  "src": "34425:5:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "34400:31:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 14929,
                                "name": "rep",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14754,
                                "src": "34392:3:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 14930,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15898,
                              "src": "34392:7:57",
                              "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": 14935,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "34392:40:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "34358:74:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14937,
                        "nodeType": "ExpressionStatement",
                        "src": "34358:74:57"
                      },
                      {
                        "assignments": [
                          14939
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14939,
                            "name": "reputationDeposit",
                            "nodeType": "VariableDeclaration",
                            "scope": 14959,
                            "src": "34446:25:57",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 14938,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "34446:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 14948,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 14947,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 14943,
                                    "name": "rep",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14754,
                                    "src": "34512:3:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14940,
                                      "name": "params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14714,
                                      "src": "34475:6:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Parameters_$12548_memory_ptr",
                                        "typeString": "struct GenesisProtocolLogic.Parameters memory"
                                      }
                                    },
                                    "id": 14941,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "votersReputationLossRatio",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12539,
                                    "src": "34475:32:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 14942,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 15826,
                                  "src": "34475:36:57",
                                  "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": 14944,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "34475:41:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 14945,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "34474:43:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "313030",
                            "id": 14946,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "34518:3:57",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            },
                            "value": "100"
                          },
                          "src": "34474:47:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "34446:75:57"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14954,
                              "name": "reputationDeposit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14939,
                              "src": "34602:17:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14955,
                              "name": "_voter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14686,
                              "src": "34621:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14956,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14684,
                              "src": "34629:11:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14950,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14723,
                                    "src": "34567:8:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                      "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                    }
                                  },
                                  "id": 14951,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "callbacks",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12566,
                                  "src": "34567:18:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 14949,
                                "name": "VotingMachineCallbacksInterface",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15258,
                                "src": "34535:31:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_VotingMachineCallbacksInterface_$15258_$",
                                  "typeString": "type(contract VotingMachineCallbacksInterface)"
                                }
                              },
                              "id": 14952,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "34535:51:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_VotingMachineCallbacksInterface_$15258",
                                "typeString": "contract VotingMachineCallbacksInterface"
                              }
                            },
                            "id": 14953,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "burnReputation",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15219,
                            "src": "34535:66:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_bool_$",
                              "typeString": "function (uint256,address,bytes32) external returns (bool)"
                            }
                          },
                          "id": 14957,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "34535:106:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 14958,
                        "nodeType": "ExpressionStatement",
                        "src": "34535:106:57"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14962,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14684,
                        "src": "34679:11:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 14963,
                          "name": "organizations",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12697,
                          "src": "34692:13:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                            "typeString": "mapping(bytes32 => address)"
                          }
                        },
                        "id": 14966,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 14964,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14723,
                            "src": "34706:8:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                              "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                            }
                          },
                          "id": 14965,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "organizationId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12564,
                          "src": "34706:23:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "34692:38:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14967,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14686,
                        "src": "34732:6:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14968,
                        "name": "_vote",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14688,
                        "src": "34740:5:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14969,
                        "name": "rep",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14754,
                        "src": "34747:3:57",
                        "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": 14961,
                      "name": "VoteProposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15101,
                      "src": "34666:12:57",
                      "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": 14970,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "34666:85:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14971,
                  "nodeType": "EmitStatement",
                  "src": "34661:90:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14973,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14684,
                        "src": "34777:11:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 14972,
                      "name": "_execute",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14496,
                      "src": "34768:8:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (bytes32) returns (bool)"
                      }
                    },
                    "id": 14974,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "34768:21:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 14694,
                  "id": 14975,
                  "nodeType": "Return",
                  "src": "34761:28:57"
                }
              ]
            },
            "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@param _rep how many reputation the voter would like to stake for this vote.\n        if  _rep==0 so the voter full reputation will be use.\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": 14977,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "internalVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14691,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14684,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 14977,
                  "src": "31931:19:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14683,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "31931:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14686,
                  "name": "_voter",
                  "nodeType": "VariableDeclaration",
                  "scope": 14977,
                  "src": "31952:14:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14685,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "31952:7:57",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14688,
                  "name": "_vote",
                  "nodeType": "VariableDeclaration",
                  "scope": 14977,
                  "src": "31968:13:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14687,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "31968:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14690,
                  "name": "_rep",
                  "nodeType": "VariableDeclaration",
                  "scope": 14977,
                  "src": "31983:12:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14689,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "31983:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "31930:66:57"
            },
            "returnParameters": {
              "id": 14694,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14693,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 14977,
                  "src": "32014:4:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14692,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "32014:4:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "32013:6:57"
            },
            "scope": 15047,
            "src": "31909:2887:57",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 15005,
              "nodeType": "Block",
              "src": "35099:241:57",
              "statements": [
                {
                  "assignments": [
                    14985
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14985,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 15005,
                      "src": "35109:25:57",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                        "typeString": "struct GenesisProtocolLogic.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 14984,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12613,
                        "src": "35109:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                          "typeString": "struct GenesisProtocolLogic.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14989,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 14986,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 12689,
                      "src": "35137:9:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$12613_storage_$",
                        "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                      }
                    },
                    "id": 14988,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 14987,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14979,
                      "src": "35147:11:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "35137:22:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$12613_storage",
                      "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "35109:50:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14998,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14985,
                                "src": "35312:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 14999,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "stakes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12608,
                              "src": "35312:15:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 15001,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 15000,
                              "name": "NO",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12707,
                              "src": "35328:2:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "35312:19:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 14997,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "35304:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint216_$",
                            "typeString": "type(uint216)"
                          },
                          "typeName": "uint216"
                        },
                        "id": 15002,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "35304:28:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint216",
                          "typeString": "uint216"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint216",
                          "typeString": "uint216"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 14991,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14985,
                                "src": "35273:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$12613_storage_ptr",
                                  "typeString": "struct GenesisProtocolLogic.Proposal storage pointer"
                                }
                              },
                              "id": 14992,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "stakes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12608,
                              "src": "35273:15:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 14994,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 14993,
                              "name": "YES",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12710,
                              "src": "35289:3:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "35273:20:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 14990,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "35265:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint216_$",
                            "typeString": "type(uint216)"
                          },
                          "typeName": "uint216"
                        },
                        "id": 14995,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "35265:29:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint216",
                          "typeString": "uint216"
                        }
                      },
                      "id": 14996,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "fraction",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11134,
                      "src": "35265:38:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint216_$_t_uint216_$returns$_t_uint256_$bound_to$_t_uint216_$",
                        "typeString": "function (uint216,uint216) pure returns (uint256)"
                      }
                    },
                    "id": 15003,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "35265:68:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 14983,
                  "id": 15004,
                  "nodeType": "Return",
                  "src": "35258:75:57"
                }
              ]
            },
            "documentation": "@dev _score return the proposal score (Confidence level)\nFor dual choice proposal S = (S+)/(S-)\n@param _proposalId the ID of the proposal\n@return uint256 proposal score as real number.",
            "id": 15006,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_score",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14980,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14979,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 15006,
                  "src": "35047:19:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14978,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "35047:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "35046:21:57"
            },
            "returnParameters": {
              "id": 14983,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14982,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 15006,
                  "src": "35090:7:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14981,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "35090:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "35089:9:57"
            },
            "scope": 15047,
            "src": "35031:309:57",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 15045,
              "nodeType": "Block",
              "src": "35572:297:57",
              "statements": [
                {
                  "assignments": [
                    15014
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15014,
                      "name": "pState",
                      "nodeType": "VariableDeclaration",
                      "scope": 15045,
                      "src": "35582:20:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ProposalState_$12514",
                        "typeString": "enum GenesisProtocolLogic.ProposalState"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 15013,
                        "name": "ProposalState",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12514,
                        "src": "35582:13:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ProposalState_$12514",
                          "typeString": "enum GenesisProtocolLogic.ProposalState"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 15019,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 15015,
                        "name": "proposals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12689,
                        "src": "35605:9:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$12613_storage_$",
                          "typeString": "mapping(bytes32 => struct GenesisProtocolLogic.Proposal storage ref)"
                        }
                      },
                      "id": 15017,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 15016,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15008,
                        "src": "35615:11:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "35605:22:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$12613_storage",
                        "typeString": "struct GenesisProtocolLogic.Proposal storage ref"
                      }
                    },
                    "id": 15018,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "state",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 12568,
                    "src": "35605:28:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ProposalState_$12514",
                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "35582:51:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 15042,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 15036,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 15030,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_enum$_ProposalState_$12514",
                                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                                  },
                                  "id": 15023,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 15020,
                                    "name": "pState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15014,
                                    "src": "35652:6:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ProposalState_$12514",
                                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 15021,
                                      "name": "ProposalState",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12514,
                                      "src": "35662:13:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                        "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                      }
                                    },
                                    "id": 15022,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "PreBoosted",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "35662:24:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ProposalState_$12514",
                                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                                    }
                                  },
                                  "src": "35652:34:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 15024,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "35651:36:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_enum$_ProposalState_$12514",
                                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                                  },
                                  "id": 15028,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 15025,
                                    "name": "pState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15014,
                                    "src": "35707:6:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ProposalState_$12514",
                                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 15026,
                                      "name": "ProposalState",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12514,
                                      "src": "35717:13:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                        "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                      }
                                    },
                                    "id": 15027,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "Boosted",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "35717:21:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ProposalState_$12514",
                                      "typeString": "enum GenesisProtocolLogic.ProposalState"
                                    }
                                  },
                                  "src": "35707:31:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 15029,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "35706:33:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "35651:88:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_ProposalState_$12514",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                },
                                "id": 15034,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 15031,
                                  "name": "pState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15014,
                                  "src": "35759:6:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalState_$12514",
                                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 15032,
                                    "name": "ProposalState",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12514,
                                    "src": "35769:13:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                      "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                    }
                                  },
                                  "id": 15033,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "QuietEndingPeriod",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "35769:31:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalState_$12514",
                                    "typeString": "enum GenesisProtocolLogic.ProposalState"
                                  }
                                },
                                "src": "35759:41:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 15035,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "35758:43:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "35651:150:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_ProposalState_$12514",
                                "typeString": "enum GenesisProtocolLogic.ProposalState"
                              },
                              "id": 15040,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 15037,
                                "name": "pState",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15014,
                                "src": "35821:6:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$12514",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 15038,
                                  "name": "ProposalState",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12514,
                                  "src": "35831:13:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ProposalState_$12514_$",
                                    "typeString": "type(enum GenesisProtocolLogic.ProposalState)"
                                  }
                                },
                                "id": 15039,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "Queued",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "35831:20:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalState_$12514",
                                  "typeString": "enum GenesisProtocolLogic.ProposalState"
                                }
                              },
                              "src": "35821:30:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 15041,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "35820:32:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "35651:201:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 15043,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "35650:212:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 15012,
                  "id": 15044,
                  "nodeType": "Return",
                  "src": "35643:219:57"
                }
              ]
            },
            "documentation": "@dev _isVotable check if the proposal is votable\n@param _proposalId the ID of the proposal\n@return bool true or false",
            "id": 15046,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_isVotable",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15009,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15008,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 15046,
                  "src": "35523:19:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 15007,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "35523:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "35522:21:57"
            },
            "returnParameters": {
              "id": 15012,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15011,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 15046,
                  "src": "35566:4:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15010,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "35566:4:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "35565:6:57"
            },
            "scope": 15047,
            "src": "35503:366:57",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 15048,
        "src": "531:35340:57"
      }
    ],
    "src": "0:35872:57"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.4+commit.9549d8ff.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.16",
  "updatedAt": "2020-07-07T14:28:02.158Z",
  "devdoc": {
    "methods": {
      "constructor": {
        "details": "Constructor"
      },
      "executeBoosted(bytes32)": {
        "details": "executeBoosted try to execute a boosted or QuietEndingPeriod proposal if it is expired",
        "params": {
          "_proposalId": "the id of the proposal"
        },
        "return": "uint256 expirationCallBounty the bounty amount for the expiration call"
      },
      "getAllowedRangeOfChoices()": {
        "details": "getAllowedRangeOfChoices returns the allowed range of choices for a voting machine.",
        "return": "min - minimum number of choices max - maximum number of choices"
      },
      "getParametersHash(uint256[11],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"
      },
      "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": {
          "_organization": "address",
          "_paramsHash": "parameters hash",
          "_proposer": "address"
        }
      },
      "redeem(bytes32,address)": {
        "details": "redeem a reward for a successful stake, vote or proposing. The function use a beneficiary address as a parameter (and not msg.sender) to enable users to redeem on behalf of someone else.",
        "params": {
          "_beneficiary": "- the beneficiary address",
          "_proposalId": "the ID of the proposal"
        },
        "return": "rewards -          [0] stakerTokenReward          [1] voterReputationReward          [2] proposerReputationReward"
      },
      "redeemDaoBounty(bytes32,address)": {
        "details": "redeemDaoBounty a reward for a successful stake. The function use a beneficiary address as a parameter (and not msg.sender) to enable users to redeem on behalf of someone else.",
        "params": {
          "_beneficiary": "- the beneficiary address",
          "_proposalId": "the ID of the proposal"
        },
        "return": "redeemedAmount - redeem token amountpotentialAmount - potential redeem token amount(if there is enough tokens bounty at the organization )"
      },
      "setParameters(uint256[11],address)": {
        "details": "hash the parameters, save them if necessary, and return the hash value",
        "params": {
          "_params": "a parameters array   _params[0] - _queuedVoteRequiredPercentage,   _params[1] - _queuedVotePeriodLimit, //the time limit for a proposal to be in an absolute voting mode.   _params[2] - _boostedVotePeriodLimit, //the time limit for a proposal to be in an relative voting mode.   _params[3] - _preBoostedVotePeriodLimit, //the time limit for a proposal to be in an preparation                 state (stable) before boosted.   _params[4] -_thresholdConst   _params[5] -_quietEndingPeriod   _params[6] -_proposingRepReward   _params[7] -_votersReputationLossRatio   _params[8] -_minimumDaoBounty   _params[9] -_daoBountyConst   _params[10] -_activationTime",
          "_voteOnBehalf": "- authorized to vote on behalf of others."
        }
      },
      "shouldBoost(bytes32)": {
        "details": "shouldBoost check if a proposal should be shifted to boosted phase.",
        "params": {
          "_proposalId": "the ID of the proposal"
        },
        "return": "bool true or false."
      },
      "threshold(bytes32,bytes32)": {
        "details": "threshold return the organization's score threshold which required by a proposal to shift to boosted state. This threshold is dynamically set and it depend on the number of boosted proposal.",
        "params": {
          "_organizationId": "the organization identifier",
          "_paramsHash": "the organization parameters hash"
        },
        "return": "uint256 organization's score threshold as real number."
      },
      "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"
      }
    },
    "title": "GenesisProtocol implementation -an organization's voting machine scheme."
  },
  "userdoc": {
    "methods": {}
  }
}