{
  "contractName": "SimpleDAIStakingNoDonation",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_dai",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_cDai",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_fundManager",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_blockInterval",
          "type": "uint256"
        },
        {
          "internalType": "contract Avatar",
          "name": "_avatar",
          "type": "address"
        },
        {
          "internalType": "contract Identity",
          "name": "_identity",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "staker",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "daiValue",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "daiActual",
          "type": "uint256"
        }
      ],
      "name": "DAIStakeWithdraw",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "staker",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "daiValue",
          "type": "uint256"
        }
      ],
      "name": "DAIStaked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "cdaiValue",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "daiValue",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "daiPrecisionLoss",
          "type": "uint256"
        }
      ],
      "name": "InterestCollected",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Paused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "PauserAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "PauserRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Unpaused",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "addPauser",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "avgInterestDonatedRatio",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "blockInterval",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "cDai",
      "outputs": [
        {
          "internalType": "contract cERC20",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "canCollect",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "currentDAIWorth",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "currentUBIInterest",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "dai",
      "outputs": [
        {
          "internalType": "contract ERC20",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "end",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "fundManager",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "identity",
      "outputs": [
        {
          "internalType": "contract Identity",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isOwner",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "isPauser",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isRegistered",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "scheme",
          "type": "address"
        }
      ],
      "name": "isRegistered",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "lastUBICollection",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "pause",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "paused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "contract ERC20",
          "name": "_token",
          "type": "address"
        }
      ],
      "name": "recover",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "renouncePauser",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "contract Avatar",
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "setAvatar",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_fundManager",
          "type": "address"
        }
      ],
      "name": "setFundManager",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "contract Identity",
          "name": "_identity",
          "type": "address"
        }
      ],
      "name": "setIdentity",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "stakeDAI",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "stakers",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "stakedDAI",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "lastStake",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "start",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "totalStaked",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "withdrawStake",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        }
      ],
      "name": "collectUBIInterest",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_dai\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_cDai\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_fundManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_blockInterval\",\"type\":\"uint256\"},{\"internalType\":\"contract Avatar\",\"name\":\"_avatar\",\"type\":\"address\"},{\"internalType\":\"contract Identity\",\"name\":\"_identity\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"daiValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"daiActual\",\"type\":\"uint256\"}],\"name\":\"DAIStakeWithdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"daiValue\",\"type\":\"uint256\"}],\"name\":\"DAIStaked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"cdaiValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"daiValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"daiPrecisionLoss\",\"type\":\"uint256\"}],\"name\":\"InterestCollected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"PauserAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"PauserRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addPauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"avgInterestDonatedRatio\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"blockInterval\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"cDai\",\"outputs\":[{\"internalType\":\"contract cERC20\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"canCollect\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"collectUBIInterest\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"currentDAIWorth\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"currentUBIInterest\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"dai\",\"outputs\":[{\"internalType\":\"contract ERC20\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"end\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"fundManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"identity\",\"outputs\":[{\"internalType\":\"contract Identity\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isPauser\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"scheme\",\"type\":\"address\"}],\"name\":\"isRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lastUBICollection\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract ERC20\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"recover\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renouncePauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract Avatar\",\"name\":\"_avatar\",\"type\":\"address\"}],\"name\":\"setAvatar\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_fundManager\",\"type\":\"address\"}],\"name\":\"setFundManager\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract Identity\",\"name\":\"_identity\",\"type\":\"address\"}],\"name\":\"setIdentity\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"stakeDAI\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"stakers\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"stakedDAI\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastStake\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"start\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalStaked\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"withdrawStake\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"canCollect()\":{\"details\":\"Checks if enough blocks have passed so it would be possible to execute `collectUBIInterest` according to the length of `blockInterval`\",\"return\":\"(bool) True if enough blocks have passed\"},\"currentDAIWorth()\":{\"details\":\"Calculates the worth of the staked cDAI tokens in DAI.\",\"return\":\"(uint256) The worth in DAI\"},\"currentUBIInterest()\":{\"details\":\"Calculates the current interest that was gained.\",\"return\":\"(uint256, uint256, uint256) The interest in cDAI, the interest in DAI, the amount which is not covered by precision of DAI\"},\"end()\":{\"details\":\"making the contract inactive NOTICE: this could theoretically result in future interest earned in cdai to remain locked but we dont expect any other stakers but us in SimpleDAIStaking\"},\"isOwner()\":{\"return\":\"true if `msg.sender` is the owner of the contract.\"},\"isRegistered()\":{\"details\":\"function to see if an avatar has been set and if this scheme is registered\",\"return\":\"true if scheme is registered\"},\"isRegistered(address)\":{\"details\":\"function to see if an avatar has been set and if this scheme is registered\",\"return\":\"true if scheme is registered\"},\"owner()\":{\"return\":\"the address of the owner.\"},\"pause()\":{\"details\":\"called by the owner to pause, triggers stopped state\"},\"paused()\":{\"return\":\"true if the contract is paused, false otherwise.\"},\"recover(address)\":{\"details\":\"method to recover any stuck erc20 tokens (ie  compound COMP)\",\"params\":{\"_token\":\"the ERC20 token to recover\"}},\"renounceOwnership()\":{\"details\":\"Allows the current owner to relinquish control of the contract.\"},\"setAvatar(address)\":{\"details\":\"Function to set a new avatar and controller for scheme can only be done by owner of scheme\"},\"setFundManager(address)\":{\"details\":\"Allows the DAO to change the fund manager contract address\",\"params\":{\"_fundManager\":\"Address of the new contract\"}},\"stakeDAI(uint256)\":{\"details\":\"Allows a staker to deposit DAI tokens. Notice that `approve` is needed to be executed before the execution of this method. Can be executed only when the contract is not paused.\",\"params\":{\"_amount\":\"The amount of DAI to stake\"}},\"start()\":{\"details\":\"Start function. Adds this contract to identity as a feeless scheme. Can only be called if scheme is registered\"},\"transferOwnership(address)\":{\"details\":\"Allows the current owner to transfer control of the contract to a newOwner.\",\"params\":{\"newOwner\":\"The address to transfer ownership to.\"}},\"unpause()\":{\"details\":\"called by the owner to unpause, returns to normal state\"},\"withdrawStake()\":{\"details\":\"Withdraws the sender staked DAI.\"}},\"title\":\"A SimpleDAIStaking mock. return 0 donation ratio on collect.\"},\"userdoc\":{\"methods\":{\"renounceOwnership()\":{\"notice\":\"Renouncing to ownership will leave the contract without an owner. It will not be possible to call the functions with the `onlyOwner` modifier anymore.\"}}}},\"settings\":{\"compilationTarget\":{\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/stakingModel/contracts/mocks/SimpleDAIStakingNoDonation.sol\":\"SimpleDAIStakingNoDonation\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/DSMath.sol\":{\"keccak256\":\"0x59fb5b1c4c3f68c1694f6ff5698016ac8ee9401b61e87473113dc103b7a6b0ff\",\"urls\":[\"bzz-raw://7410f43989dea44e64bed870958ce9199606dd8a9783e79fe8deca7b544164af\",\"dweb:/ipfs/QmPrrdvp2ErwL6SJSveB3JANo7ivadSMnk9gpWZD8nR7hy\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/dao/schemes/FeelessScheme.sol\":{\"keccak256\":\"0x7c542d44cbd864ee0ddecbc5016d9d7eb9ce65ab463fdd9f21eb8ce3c6ffc8ea\",\"urls\":[\"bzz-raw://4753dd823c0b0cbe7d7d02e1df64ace07d7a163af3aaff12697aee70a1b45f2f\",\"dweb:/ipfs/QmPkKeH88M3f6UbHphayUbjEBNV4rmoogtDmVundzBKbFK\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/dao/schemes/SchemeGuard.sol\":{\"keccak256\":\"0x32e1b2a172e2c22a6aa757bfcb0722cc67f64c5c2e48df3dec2737903516d565\",\"urls\":[\"bzz-raw://bee57a8eba08348e93a0c18f3ab534e67865c0fa27afe27f5cf234bd5f248915\",\"dweb:/ipfs/Qmd8aveHWcUkYWMyJrJRZPyVXj8MAMBfpBFo6g4Z2VJeo3\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/identity/Identity.sol\":{\"keccak256\":\"0x282184478f1d618d3523b28a84a7f7003dfdc99cad120e5e358d2cce1f5fb491\",\"urls\":[\"bzz-raw://67e17ecb57b24c4fb801abc2c52c3148af3b967e28da4fb7e074d18efb7a57c1\",\"dweb:/ipfs/QmfZ8jXhdTHtxr3gfByRj4HnXnGynX7SLZWWGR8k768aGB\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/identity/IdentityAdminRole.sol\":{\"keccak256\":\"0x8e82c45eefe0da77d017144dfad12602c68124297035937901cdd08ce48c57ff\",\"urls\":[\"bzz-raw://e20e606342b3b35f41a081294cf3f716fe7e27e81d3090daa37c5208f4ef4bc3\",\"dweb:/ipfs/QmVEhHpiwVsksnPyHkfNa5LpTBLxoP9kj5NRZUBv456ewK\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/identity/IdentityGuard.sol\":{\"keccak256\":\"0xcc395c0e8f812201b5ed1f45e7272120ee5ffe73bfe13e325dfd872aef235b22\",\"urls\":[\"bzz-raw://58f93e4b9f48ec31ac151208e4f9e6b356cc23dfc9585d846bc09bf35d6ff7be\",\"dweb:/ipfs/QmdxJHUCaFx8N66kkDhYdA4k6d2V91yBRG6sombuPxBq7X\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/stakingModel/contracts/SimpleDAIStaking.sol\":{\"keccak256\":\"0x245246632bb2a59a67277107f64975487806db57f8ad49d14e9626d8d72cd186\",\"urls\":[\"bzz-raw://e767763526d6b497514991f02db1a3da9c925ce32e522213f943cd2b8305cf12\",\"dweb:/ipfs/QmfUjN8Z59ZZNb3vkChmjoTGrpxwrNKNxzjML2pmrhWD2T\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/stakingModel/contracts/mocks/SimpleDAIStakingNoDonation.sol\":{\"keccak256\":\"0x51fecd0782ba9804a5f83f33d45e23e16264eb4a08654911cfcf199f34331ed3\",\"urls\":[\"bzz-raw://8165f84e22c9bcc3dcb05a36089669f3e1da020ac5ee8486c805a03ba2ae1d1b\",\"dweb:/ipfs/QmTsoeL94kyC53rKwAjJt2voizoh6DfKMeTgDTR9h9Ntm9\"]},\"@daostack/arc/contracts/controller/Avatar.sol\":{\"keccak256\":\"0x4e4fb9d3bc21f42fbfc6a01e9f8aa483a59e9f447b0d604f55b587a81ec09ef4\",\"urls\":[\"bzz-raw://9d3c1c7575cf6075ea1d89921f09b9b8e322b208dacaf0446cd4f64506c999f0\",\"dweb:/ipfs/QmVGDDHAR2ByuQpbgV7BBKXGEAcbaWvejpEZYzHgaagBFK\"]},\"@daostack/arc/contracts/controller/ControllerInterface.sol\":{\"keccak256\":\"0x933e92612c90f292c7b59908958b003f1a13d90b97bed0572b566353c20974dc\",\"urls\":[\"bzz-raw://ce1fcf85b744fcce2dbd4205e3943e9b4ec36a5f0330d4bbf61e65f1a3e0e470\",\"dweb:/ipfs/QmUWiLkBDdekhpy93nTzBtxDHL6yNh6sTUM9G8VbsHcBzy\"]},\"@daostack/arc/contracts/controller/DAOToken.sol\":{\"keccak256\":\"0x9b213e4e3ceeffcfc1c962a43b70b8d763d8091a2dd713fc1989b97bb68786e6\",\"urls\":[\"bzz-raw://51d1d6e85fd90f45395a16b7a3c703c4636e836041f2a13f806e4222ef2e59c1\",\"dweb:/ipfs/QmQjeCeFf7TJzsYjT5scyZUDDixBA8Yy8YppgBuxcKPDnP\"]},\"@daostack/arc/contracts/globalConstraints/GlobalConstraintInterface.sol\":{\"keccak256\":\"0xc006c4591ec10b845a56e13f6791db2c428610953034686d52b2a934b6c8f36f\",\"urls\":[\"bzz-raw://19495cd88280e54d7ddcd043ffeff75e6d3777a0c42debcd61cae448e9497ea0\",\"dweb:/ipfs/QmYxWz7CgFmmddrcVXJKfob5Ktwykc2imNVUwLSR5WR8bJ\"]},\"@daostack/arc/contracts/libs/SafeERC20.sol\":{\"keccak256\":\"0xf6727d432f67046145b078f40c1cc4f6be7b0d12a6678ecaf457edf7550d244c\",\"urls\":[\"bzz-raw://5dba7734c4fed446c084a707761cbc66ba22b8b93ef53c8d4a22a76b6e271690\",\"dweb:/ipfs/QmP2VpPKUqLh4ZZs6LaxHVpCN1zCmiorygL9bMub4mbYCw\"]},\"@daostack/infra/contracts/Reputation.sol\":{\"keccak256\":\"0x3d226dac0fe7d758f0287fb28bc25fcec1f69d19888ae3a550fa49856d61c482\",\"urls\":[\"bzz-raw://8856852c8fe0ba1c9aab326f0a9a6e7f31a238de2778fa5188e6fc399f7eb352\",\"dweb:/ipfs/QmVH4ppR9Dk7v8yxaSgeArdMv9gBBVoQxEf4E3UsqQ4rY2\"]},\"openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0x659ba0f9a3392cd50a8a5fafaf5dfd8c6a0878f6a4613bceff4e90dceddcd865\",\"urls\":[\"bzz-raw://4ca6617349a9b36fd82e9442a8e445ce9021a174e4399d1457ddc894ee3f5df3\",\"dweb:/ipfs/QmcmyB4cNazZ1sw963Afaijt67M9bDgwmGXCgQajGTD4tm\"]},\"openzeppelin-solidity/contracts/access/roles/PauserRole.sol\":{\"keccak256\":\"0x6506133e295a7199df2ac5dfc52853d9d767f68450b6d0193e9d8056b164ce86\",\"urls\":[\"bzz-raw://9c03592a9e6b1377e401b74eccf175a250232b5a341347d3fc5cb50e9bc86ba2\",\"dweb:/ipfs/QmYAr1yXT89hNUMJ37aiBpD9HtYfBDqmueVCzphRuuU7oZ\"]},\"openzeppelin-solidity/contracts/lifecycle/Pausable.sol\":{\"keccak256\":\"0x3b0ed31deeba7e3c6cfbbe8092a6b427084ee390800a06acdea5c17c8185d606\",\"urls\":[\"bzz-raw://bbdbf9d3754fcdcc85aec0432fabcec914317b1c2081b43753442ed53853a34a\",\"dweb:/ipfs/QmVHWQBn5xQkQEHhyGNEeS5gjjALZEk5ZfcjFt7kL6MoLy\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x965012d27b4262d7a41f5028cbb30c51ebd9ecd4be8fb30380aaa7a3c64fbc8b\",\"urls\":[\"bzz-raw://1eb493553b27efd46c231a836a83ce50d215639feb97b4aac9f301d0fd034ff5\",\"dweb:/ipfs/QmbMdvSXcqGKxeeYvzF3VrWpoHQyVzMXBhzhAokF2Gdymv\"]},\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0x980de387a1a020a498f53d00f89fecebb12c949a17e8f160093c0303ede2b786\",\"urls\":[\"bzz-raw://f07a2c393caa85f62f0aaa461e3edd50aa59371d4209778ba0558d7f8b4b856c\",\"dweb:/ipfs/QmeN3ZiYGSjCnQFeYaJNgoXjF9eDue1g3e9pqManRkeBtV\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xba431353cb4fe70777ac026231eb5468e41aa1e81240a2b8136917acc5fff4dc\",\"urls\":[\"bzz-raw://f40c91ca270bdc9b156f339081a0fc2bbcf73cf5f62b8c73ba555df753ff6619\",\"dweb:/ipfs/QmT8y2VVjGaFdGphpcXrgvdPi2EgF9LuCDgJiJ89LvpFRV\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol\":{\"keccak256\":\"0xa3e68fd7f987c8fbdaf4867d428a69a15f3cf2f69709a5b0a0fbef750b0e6fbc\",\"urls\":[\"bzz-raw://50b1ff986d3b2793850a66c8429d9886fdfb134b1509b3e98714e3e2a71e24f5\",\"dweb:/ipfs/QmSQBYPeY9tbR3ciGRNQqvcWKnNiuxtVMq2MsPWpLwuGGm\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x079c4e23ee448f529e43bfa3c4e8fb4be52cd0318ee923a276835bedf45b93d8\",\"urls\":[\"bzz-raw://ee762ff5b7746e41d27dcbcea00c7a3034b58adb1b45ddadddb5b721aff450df\",\"dweb:/ipfs/QmdxqtgEFZjHCoiYyz6pUAQ5iBm7As25jcyEbZoTaAgyDa\"]},\"openzeppelin-solidity/contracts/utils/Address.sol\":{\"keccak256\":\"0x5c731061b804fa256fc8c05150eafe5d20b6bb94541a8f187912bf84f7033f34\",\"urls\":[\"bzz-raw://a3c2d9f046beebab7fb41b1b124a6a124a36f510f7c67365861402ac831bdc71\",\"dweb:/ipfs/QmUtASRgitregbKH83anopLtF9vFQe3BKeAjhUa6F7t9YV\"]}},\"version\":1}",
  "bytecode": "0x6080604052600380546001600160a01b03191690556000600a55600b805463ffffffff1916620f42401790553480156200003857600080fd5b506040516200263d3803806200263d833981810160405260c08110156200005e57600080fd5b508051602082015160408301516060840151608085015160a090950151939492939192909185858585858580828181620000a1336001600160e01b03620002cb16565b600180546001600160a81b03191661010033810291909117918290556040516001600160a01b039190920416906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600280546001600160a01b0319166001600160a01b0383811691909117918290551615620001bb57600260009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200016d57600080fd5b505afa15801562000182573d6000803e3d6000fd5b505050506040513d60208110156200019957600080fd5b5051600380546001600160a01b0319166001600160a01b039092169190911790555b506001600160a01b03811662000218576040805162461bcd60e51b815260206004820152601960248201527f537570706c696564206964656e74697479206973206e756c6c00000000000000604482015290519081900360640190fd5b600480546001600160a01b03199081166001600160a01b03938416179091556006805482168b841617905560078054909116918916919091179055505060088390556200027243846200031d602090811b6200169d17901c565b600955600b80546001600160a01b0380871664010000000002600160201b600160c01b031990921691909117909155600254620002b991166001600160e01b036200034116565b50505050505050505050505062000428565b620002e68160006200037660201b6200205c1790919060201c565b6040516001600160a01b038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b60008082116200032c57600080fd5b60008284816200033857fe5b04949350505050565b62000355336001600160e01b03620003cf16565b6200035f57600080fd5b62000373816001600160e01b03620002cb16565b50565b6001600160a01b0381166200038a57600080fd5b6200039f82826001600160e01b03620003f216565b15620003aa57600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6000620003ec826000620003f260201b620019521790919060201c565b92915050565b60006001600160a01b0382166200040857600080fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b61220580620004386000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c8063817b1cd21161011a578063be9a6555116100ad578063c9b0d97b1161007c578063c9b0d97b146104aa578063e8b2467d146104b2578063efbe1c1c146104d3578063f2fde38b146104db578063f4b9fa7514610501576101fb565b8063be9a65551461046c578063bed9d86114610474578063c3c5a5471461047c578063c4c22e98146104a2576101fb565b80638da5cb5b116100e95780638da5cb5b146104155780638f32d59b1461041d5780639168ae72146104255780639b089d5514610464576101fb565b8063817b1cd2146103d75780638247cc0c146103df57806382dc1ec4146103e75780638456cb591461040d576101fb565b80633f4ba83a116101925780636209ec2d116101615780636209ec2d146103a257806364aab239146103aa5780636ef8d66d146103c7578063715018a6146103cf576101fb565b80633f4ba83a1461034657806346fbf68e1461034e5780635c975abb146103745780635d5bf1781461037c576101fb565b806322366844116101ce578063223668441461028e578063232a3060146102aa5780632c159a1a146102d057806337455990146102f4576101fb565b8063086cfca8146102005780630cd865ec1461022857806317e49ca11461024e578063210a27a914610274575b600080fd5b6102266004803603602081101561021657600080fd5b50356001600160a01b0316610509565b005b6102266004803603602081101561023e57600080fd5b50356001600160a01b03166105c4565b6102566107d7565b60408051938452602084019290925282820152519081900360600190f35b61027c610925565b60408051918252519081900360200190f35b610296610a4e565b604080519115158252519081900360200190f35b610226600480360360208110156102c057600080fd5b50356001600160a01b0316610a5e565b6102d8610aeb565b604080516001600160a01b039092168252519081900360200190f35b61031a6004803603602081101561030a57600080fd5b50356001600160a01b0316610afa565b6040805194855260208501939093528383019190915263ffffffff166060830152519081900360800190f35b610226610b88565b6102966004803603602081101561036457600080fd5b50356001600160a01b0316610be8565b610296610c02565b6102266004803603602081101561039257600080fd5b50356001600160a01b0316610c0b565b6102d8610cf4565b610226600480360360208110156103c057600080fd5b5035610d0b565b610226610fdd565b610226610fe8565b61027c611049565b61027c61104f565b610226600480360360208110156103fd57600080fd5b50356001600160a01b0316611055565b610226611073565b6102d86110d6565b6102966110ea565b61044b6004803603602081101561043b57600080fd5b50356001600160a01b0316611100565b6040805192835260208301919091528051918290030190f35b6102d8611119565b610226611128565b610226611184565b6102966004803603602081101561049257600080fd5b50356001600160a01b031661144d565b61027c611539565b61029661153f565b6104ba61155f565b6040805163ffffffff9092168252519081900360200190f35b61022661156b565b610226600480360360208110156104f157600080fd5b50356001600160a01b03166115da565b6102d86115f4565b6105116110ea565b61051a57600080fd5b600280546001600160a01b0319166001600160a01b03838116919091179182905560408051638da5cb5b60e01b815290519290911691638da5cb5b91600480820192602092909190829003018186803b15801561057657600080fd5b505afa15801561058a573d6000803e3d6000fd5b505050506040513d60208110156105a057600080fd5b5051600380546001600160a01b0319166001600160a01b0390921691909117905550565b6002546001600160a01b03163314610623576040805162461bcd60e51b815260206004820181905260248201527f6f6e6c79204176617461722063616e2063616c6c2074686973206d6574686f64604482015290519081900360640190fd5b604080516370a0823160e01b815230600482015290516000916001600160a01b038416916370a0823191602480820192602092909190829003018186803b15801561066d57600080fd5b505afa158015610681573d6000803e3d6000fd5b505050506040513d602081101561069757600080fd5b50516007549091506001600160a01b038381169116141561070057600a541580156106c557506106c5610c02565b6107005760405162461bcd60e51b81526004018080602001828103825260358152602001806120d26035913960400191505060405180910390fd5b6002546040805163a9059cbb60e01b81526001600160a01b0392831660048201526024810184905290519184169163a9059cbb916044808201926020929091908290030181600087803b15801561075657600080fd5b505af115801561076a573d6000803e3d6000fd5b505050506040513d602081101561078057600080fd5b50516107d3576040805162461bcd60e51b815260206004820152601760248201527f7265636f766572207472616e73666572206661696c6564000000000000000000604482015290519081900360640190fd5b5050565b600080600080600760009054906101000a90046001600160a01b03166001600160a01b031663182df0f56040518163ffffffff1660e01b815260040160206040518083038186803b15801561082b57600080fd5b505afa15801561083f573d6000803e3d6000fd5b505050506040513d602081101561085557600080fd5b505190506000610863610925565b9050600a5481116108805750600093508392508291506109209050565b6000610897600a548361160390919063ffffffff16565b905060006108b96108b3836402540be40063ffffffff61161d16565b8561164b565b905060006108d582678ac7230489e8000063ffffffff61168016565b90506108ef82678ac7230489e8000063ffffffff61169d16565b915060006109126402540be40061090684896116bf565b9063ffffffff61169d16565b929850929650909450505050505b909192565b600080600760009054906101000a90046001600160a01b03166001600160a01b031663182df0f56040518163ffffffff1660e01b815260040160206040518083038186803b15801561097657600080fd5b505afa15801561098a573d6000803e3d6000fd5b505050506040513d60208110156109a057600080fd5b5051600754604080516370a0823160e01b81523060048201529051929350600092610a4792600a9261090692610a41926402540be400926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b158015610a0957600080fd5b505afa158015610a1d573d6000803e3d6000fd5b505050506040513d6020811015610a3357600080fd5b50519063ffffffff61161d16565b856116bf565b9250505090565b6000610a593061144d565b905090565b6002546001600160a01b03163314610abd576040805162461bcd60e51b815260206004820181905260248201527f6f6e6c79204176617461722063616e2063616c6c2074686973206d6574686f64604482015290519081900360640190fd5b600b80546001600160a01b0390921664010000000002640100000000600160c01b0319909216919091179055565b6004546001600160a01b031681565b600080600080600b60049054906101000a90046001600160a01b03166001600160a01b0316336001600160a01b031614610b655760405162461bcd60e51b81526004018080602001828103825260258152602001806121076025913960400191505060405180910390fd5b6000806000610b73886116ef565b50919a90995090975060009650945050505050565b610b9133610be8565b610b9a57600080fd5b60015460ff16610ba957600080fd5b6001805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b6000610bfa818363ffffffff61195216565b90505b919050565b60015460ff1690565b610c136110ea565b610c1c57600080fd5b806001600160a01b031663223668446040518163ffffffff1660e01b815260040160206040518083038186803b158015610c5557600080fd5b505afa158015610c69573d6000803e3d6000fd5b505050506040513d6020811015610c7f57600080fd5b5051610cd2576040805162461bcd60e51b815260206004820152601a60248201527f4964656e74697479206973206e6f742072656769737465726564000000000000604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600b5464010000000090046001600160a01b031681565b60015460ff1615610d1b57600080fd5b60008111610d5a5760405162461bcd60e51b81526004018080602001828103825260298152602001806120a96029913960400191505060405180910390fd5b600654604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b158015610db457600080fd5b505af1158015610dc8573d6000803e3d6000fd5b505050506040513d6020811015610dde57600080fd5b50511515600114610e205760405162461bcd60e51b81526004018080602001828103825260388152602001806121996038913960400191505060405180910390fd5b6006546007546040805163095ea7b360e01b81526001600160a01b039283166004820152602481018590529051919092169163095ea7b39160448083019260209291908290030181600087803b158015610e7957600080fd5b505af1158015610e8d573d6000803e3d6000fd5b505050506040513d6020811015610ea357600080fd5b50506007546040805163140e25ad60e31b81526004810184905290516000926001600160a01b03169163a0712d6891602480830192602092919082900301818787803b158015610ef257600080fd5b505af1158015610f06573d6000803e3d6000fd5b505050506040513d6020811015610f1c57600080fd5b505190508015610f63578015610f635760405162461bcd60e51b815260040180806020018281038252602381526020018061212c6023913960400191505060405180910390fd5b3360009081526005602052604090208054610f84908463ffffffff61198716565b8155436001820155600a54610f9f908463ffffffff61198716565b600a5560408051848152905133917f39f13ee9b63dd3ac2e710600c086583db75aed574725071a694419f706d17244919081900360200190a2505050565b610fe633611999565b565b610ff06110ea565b610ff957600080fd5b60015460405160009161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360018054610100600160a81b0319169055565b600a5481565b60095481565b61105e33610be8565b61106757600080fd5b611070816119e1565b50565b61107c33610be8565b61108557600080fd5b60015460ff161561109557600080fd5b6001805460ff1916811790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b60015461010090046001600160a01b031690565b60015461010090046001600160a01b0316331490565b6005602052600090815260409020805460019091015482565b6007546001600160a01b031681565b611130610a4e565b61117c576040805162461bcd60e51b815260206004820152601860248201527714d8da195b59481a5cc81b9bdd081c9959da5cdd195c995960421b604482015290519081900360640190fd5b610fe6611a29565b33600090815260056020526040902080546111d6576040805162461bcd60e51b815260206004820152600d60248201526c139bc8111052481cdd185ad959609a1b604482015290519081900360640190fd5b60075481546040805163852a12e360e01b81526004810192909252516001600160a01b039092169163852a12e3916024808201926020929091908290030181600087803b15801561122657600080fd5b505af115801561123a573d6000803e3d6000fd5b505050506040513d602081101561125057600080fd5b50511561129c576040805162461bcd60e51b81526020600482015260156024820152744661696c656420746f2072656465656d206344616960581b604482015290519081900360640190fd5b805460008255600a546112b5908263ffffffff61160316565b600a55600654604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561130357600080fd5b505afa158015611317573d6000803e3d6000fd5b505050506040513d602081101561132d57600080fd5b505190508181101561133d578091505b6006546040805163a9059cbb60e01b81523360048201526024810185905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561139157600080fd5b505af11580156113a5573d6000803e3d6000fd5b505050506040513d60208110156113bb57600080fd5b505161140e576040805162461bcd60e51b815260206004820152601860248201527f7769746864726177207472616e73666572206661696c65640000000000000000604482015290519081900360640190fd5b6040805183815260208101839052815133927f7441c5625c09ad27ec4eec0984408b247a5ec0cbb33cb619115a4551f71798e7928290030190a2505050565b6002546000906001600160a01b03166114a1576040805162461bcd60e51b8152602060048201526011602482015270105d985d185c881a5cc81b9bdd081cd95d607a1b604482015290519081900360640190fd5b60035460025460408051639be2faed60e01b81526001600160a01b038681166004830152928316602482015290519190921691639be2faed916044808301926020929190829003018186803b1580156114f957600080fd5b505afa15801561150d573d6000803e3d6000fd5b505050506040513d602081101561152357600080fd5b505161153157506000610bfd565b506001919050565b60085481565b60006009546115596008544361169d90919063ffffffff16565b11905090565b600b5463ffffffff1681565b6002546001600160a01b031633146115ca576040805162461bcd60e51b815260206004820181905260248201527f6f6e6c79204176617461722063616e2063616c6c2074686973206d6574686f64604482015290519081900360640190fd5b6115d2611073565b610fe6611c93565b6115e26110ea565b6115eb57600080fd5b61107081611ee8565b6006546001600160a01b031681565b60008282111561161257600080fd5b508082035b92915050565b60008261162c57506000611617565b8282028284828161163957fe5b041461164457600080fd5b9392505050565b600081611671611667856b033b2e3c9fd0803ce8000000611f62565b6002855b04611fc5565b8161167857fe5b049392505050565b60008161168c57600080fd5b81838161169557fe5b069392505050565b60008082116116ab57600080fd5b60008284816116b657fe5b04949350505050565b60006b033b2e3c9fd0803ce80000006116716116db8585611f62565b60026b033b2e3c9fd0803ce800000061166b565b600080600080600b60049054906101000a90046001600160a01b03166001600160a01b0316336001600160a01b03161461175a5760405162461bcd60e51b81526004018080602001828103825260258152602001806121076025913960400191505060405180910390fd5b6001600160a01b0385163014156117a25760405162461bcd60e51b815260040180806020018281038252602881526020018061214f6028913960400191505060405180910390fd5b6117aa61153f565b6117e55760405162461bcd60e51b81526004018080602001828103825260228152602001806121776022913960400191505060405180910390fd5b60008060006117f26107d7565b92509250925061180d6008544361169d90919063ffffffff16565b60095582156118e9576007546040805163a9059cbb60e01b81526001600160a01b038b81166004830152602482018790529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561186c57600080fd5b505af1158015611880573d6000803e3d6000fd5b505050506040513d602081101561189657600080fd5b50516118e9576040805162461bcd60e51b815260206004820152601760248201527f636f6c6c656374207472616e73666572206661696c6564000000000000000000604482015290519081900360640190fd5b604080516001600160a01b038a168152602081018590528082018490526060810183905290517f0abcfa9ece819bcdcfa052a818ce11f0b9fad8b3e3ccd98f120c40be689b690f9181900360800190a1600b549298919750955063ffffffff9091169350915050565b60006001600160a01b03821661196757600080fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b60008282018381101561164457600080fd5b6119aa60008263ffffffff61201416565b6040516001600160a01b038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b6119f260008263ffffffff61205c16565b6040516001600160a01b038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b611a31610a4e565b611a7d576040805162461bcd60e51b815260206004820152601860248201527714d8da195b59481a5cc81b9bdd081c9959da5cdd195c995960421b604482015290519081900360640190fd5b600354600480546040805130602480830191909152825180830382018152604492830184526020810180516001600160e01b0316635f539d6960e01b17815260025494516368db844d60e11b81526001600160a01b039687169781018881529587169481018590526000606482018190526080948201948552835160848301528351979099169863d1b7089a9897939690949093909260a49092019190808383885b83811015611b37578181015183820152602001611b1f565b50505050905090810190601f168015611b645780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611b8657600080fd5b505af1158015611b9a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040908152811015611bc357600080fd5b815160208301805160405192949293830192919084640100000000821115611bea57600080fd5b908301906020820185811115611bff57600080fd5b8251640100000000811182820188101715611c1957600080fd5b82525081516020918201929091019080838360005b83811015611c46578181015183820152602001611c2e565b50505050905090810190601f168015611c735780820380516001836020036101000a031916815260200191505b506040525050600254610fe693506001600160a01b031691506115da9050565b611c9b610a4e565b611ce7576040805162461bcd60e51b815260206004820152601860248201527714d8da195b59481a5cc81b9bdd081c9959da5cdd195c995960421b604482015290519081900360640190fd5b600354600480546040805130602480830191909152825180830382018152604492830184526020810180516001600160e01b031663c375c2ef60e01b17815260025494516368db844d60e11b81526001600160a01b039687169781018881529587169481018590526000606482018190526080948201948552835160848301528351979099169863d1b7089a9897939690949093909260a49092019190808383885b83811015611da1578181015183820152602001611d89565b50505050905090810190601f168015611dce5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611df057600080fd5b505af1158015611e04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040908152811015611e2d57600080fd5b815160208301805160405192949293830192919084640100000000821115611e5457600080fd5b908301906020820185811115611e6957600080fd5b8251640100000000811182820188101715611e8357600080fd5b82525081516020918201929091019080838360005b83811015611eb0578181015183820152602001611e98565b50505050905090810190601f168015611edd5780820380516001836020036101000a031916815260200191505b506040525050505050565b6001600160a01b038116611efb57600080fd5b6001546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000811580611f7d57505080820282828281611f7a57fe5b04145b611617576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820182811015611617576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fd5b6001600160a01b03811661202757600080fd5b6120318282611952565b61203a57600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6001600160a01b03811661206f57600080fd5b6120798282611952565b1561208357600080fd5b6001600160a01b0316600090815260209190915260409020805460ff1916600117905556fe596f75206e65656420746f207374616b65206120706f73697469766520746f6b656e20616d6f756e7463616e207265636f7665722063446169206f6e6c79207768656e207374616b65732068617665206265656e2077697468647261776e4f6e6c792046756e644d616e616765722063616e2063616c6c2074686973206d6574686f644d696e74696e672063446169206661696c65642c2066756e64732072657475726e6564526563697069656e742063616e6e6f7420626520746865207374616b696e6720636f6e74726163744e65656420746f207761697420666f7220746865206e65787420696e74657276616c7472616e7366657246726f6d206661696c65642c206d616b65207375726520796f7520617070726f76656420444149207472616e73666572a265627a7a723158208a11e84222375a61d734e2969efd6ed24e2b3e7374d7f3a4b2322658dfc5976a64736f6c63430005100032",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101fb5760003560e01c8063817b1cd21161011a578063be9a6555116100ad578063c9b0d97b1161007c578063c9b0d97b146104aa578063e8b2467d146104b2578063efbe1c1c146104d3578063f2fde38b146104db578063f4b9fa7514610501576101fb565b8063be9a65551461046c578063bed9d86114610474578063c3c5a5471461047c578063c4c22e98146104a2576101fb565b80638da5cb5b116100e95780638da5cb5b146104155780638f32d59b1461041d5780639168ae72146104255780639b089d5514610464576101fb565b8063817b1cd2146103d75780638247cc0c146103df57806382dc1ec4146103e75780638456cb591461040d576101fb565b80633f4ba83a116101925780636209ec2d116101615780636209ec2d146103a257806364aab239146103aa5780636ef8d66d146103c7578063715018a6146103cf576101fb565b80633f4ba83a1461034657806346fbf68e1461034e5780635c975abb146103745780635d5bf1781461037c576101fb565b806322366844116101ce578063223668441461028e578063232a3060146102aa5780632c159a1a146102d057806337455990146102f4576101fb565b8063086cfca8146102005780630cd865ec1461022857806317e49ca11461024e578063210a27a914610274575b600080fd5b6102266004803603602081101561021657600080fd5b50356001600160a01b0316610509565b005b6102266004803603602081101561023e57600080fd5b50356001600160a01b03166105c4565b6102566107d7565b60408051938452602084019290925282820152519081900360600190f35b61027c610925565b60408051918252519081900360200190f35b610296610a4e565b604080519115158252519081900360200190f35b610226600480360360208110156102c057600080fd5b50356001600160a01b0316610a5e565b6102d8610aeb565b604080516001600160a01b039092168252519081900360200190f35b61031a6004803603602081101561030a57600080fd5b50356001600160a01b0316610afa565b6040805194855260208501939093528383019190915263ffffffff166060830152519081900360800190f35b610226610b88565b6102966004803603602081101561036457600080fd5b50356001600160a01b0316610be8565b610296610c02565b6102266004803603602081101561039257600080fd5b50356001600160a01b0316610c0b565b6102d8610cf4565b610226600480360360208110156103c057600080fd5b5035610d0b565b610226610fdd565b610226610fe8565b61027c611049565b61027c61104f565b610226600480360360208110156103fd57600080fd5b50356001600160a01b0316611055565b610226611073565b6102d86110d6565b6102966110ea565b61044b6004803603602081101561043b57600080fd5b50356001600160a01b0316611100565b6040805192835260208301919091528051918290030190f35b6102d8611119565b610226611128565b610226611184565b6102966004803603602081101561049257600080fd5b50356001600160a01b031661144d565b61027c611539565b61029661153f565b6104ba61155f565b6040805163ffffffff9092168252519081900360200190f35b61022661156b565b610226600480360360208110156104f157600080fd5b50356001600160a01b03166115da565b6102d86115f4565b6105116110ea565b61051a57600080fd5b600280546001600160a01b0319166001600160a01b03838116919091179182905560408051638da5cb5b60e01b815290519290911691638da5cb5b91600480820192602092909190829003018186803b15801561057657600080fd5b505afa15801561058a573d6000803e3d6000fd5b505050506040513d60208110156105a057600080fd5b5051600380546001600160a01b0319166001600160a01b0390921691909117905550565b6002546001600160a01b03163314610623576040805162461bcd60e51b815260206004820181905260248201527f6f6e6c79204176617461722063616e2063616c6c2074686973206d6574686f64604482015290519081900360640190fd5b604080516370a0823160e01b815230600482015290516000916001600160a01b038416916370a0823191602480820192602092909190829003018186803b15801561066d57600080fd5b505afa158015610681573d6000803e3d6000fd5b505050506040513d602081101561069757600080fd5b50516007549091506001600160a01b038381169116141561070057600a541580156106c557506106c5610c02565b6107005760405162461bcd60e51b81526004018080602001828103825260358152602001806120d26035913960400191505060405180910390fd5b6002546040805163a9059cbb60e01b81526001600160a01b0392831660048201526024810184905290519184169163a9059cbb916044808201926020929091908290030181600087803b15801561075657600080fd5b505af115801561076a573d6000803e3d6000fd5b505050506040513d602081101561078057600080fd5b50516107d3576040805162461bcd60e51b815260206004820152601760248201527f7265636f766572207472616e73666572206661696c6564000000000000000000604482015290519081900360640190fd5b5050565b600080600080600760009054906101000a90046001600160a01b03166001600160a01b031663182df0f56040518163ffffffff1660e01b815260040160206040518083038186803b15801561082b57600080fd5b505afa15801561083f573d6000803e3d6000fd5b505050506040513d602081101561085557600080fd5b505190506000610863610925565b9050600a5481116108805750600093508392508291506109209050565b6000610897600a548361160390919063ffffffff16565b905060006108b96108b3836402540be40063ffffffff61161d16565b8561164b565b905060006108d582678ac7230489e8000063ffffffff61168016565b90506108ef82678ac7230489e8000063ffffffff61169d16565b915060006109126402540be40061090684896116bf565b9063ffffffff61169d16565b929850929650909450505050505b909192565b600080600760009054906101000a90046001600160a01b03166001600160a01b031663182df0f56040518163ffffffff1660e01b815260040160206040518083038186803b15801561097657600080fd5b505afa15801561098a573d6000803e3d6000fd5b505050506040513d60208110156109a057600080fd5b5051600754604080516370a0823160e01b81523060048201529051929350600092610a4792600a9261090692610a41926402540be400926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b158015610a0957600080fd5b505afa158015610a1d573d6000803e3d6000fd5b505050506040513d6020811015610a3357600080fd5b50519063ffffffff61161d16565b856116bf565b9250505090565b6000610a593061144d565b905090565b6002546001600160a01b03163314610abd576040805162461bcd60e51b815260206004820181905260248201527f6f6e6c79204176617461722063616e2063616c6c2074686973206d6574686f64604482015290519081900360640190fd5b600b80546001600160a01b0390921664010000000002640100000000600160c01b0319909216919091179055565b6004546001600160a01b031681565b600080600080600b60049054906101000a90046001600160a01b03166001600160a01b0316336001600160a01b031614610b655760405162461bcd60e51b81526004018080602001828103825260258152602001806121076025913960400191505060405180910390fd5b6000806000610b73886116ef565b50919a90995090975060009650945050505050565b610b9133610be8565b610b9a57600080fd5b60015460ff16610ba957600080fd5b6001805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b6000610bfa818363ffffffff61195216565b90505b919050565b60015460ff1690565b610c136110ea565b610c1c57600080fd5b806001600160a01b031663223668446040518163ffffffff1660e01b815260040160206040518083038186803b158015610c5557600080fd5b505afa158015610c69573d6000803e3d6000fd5b505050506040513d6020811015610c7f57600080fd5b5051610cd2576040805162461bcd60e51b815260206004820152601a60248201527f4964656e74697479206973206e6f742072656769737465726564000000000000604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600b5464010000000090046001600160a01b031681565b60015460ff1615610d1b57600080fd5b60008111610d5a5760405162461bcd60e51b81526004018080602001828103825260298152602001806120a96029913960400191505060405180910390fd5b600654604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b158015610db457600080fd5b505af1158015610dc8573d6000803e3d6000fd5b505050506040513d6020811015610dde57600080fd5b50511515600114610e205760405162461bcd60e51b81526004018080602001828103825260388152602001806121996038913960400191505060405180910390fd5b6006546007546040805163095ea7b360e01b81526001600160a01b039283166004820152602481018590529051919092169163095ea7b39160448083019260209291908290030181600087803b158015610e7957600080fd5b505af1158015610e8d573d6000803e3d6000fd5b505050506040513d6020811015610ea357600080fd5b50506007546040805163140e25ad60e31b81526004810184905290516000926001600160a01b03169163a0712d6891602480830192602092919082900301818787803b158015610ef257600080fd5b505af1158015610f06573d6000803e3d6000fd5b505050506040513d6020811015610f1c57600080fd5b505190508015610f63578015610f635760405162461bcd60e51b815260040180806020018281038252602381526020018061212c6023913960400191505060405180910390fd5b3360009081526005602052604090208054610f84908463ffffffff61198716565b8155436001820155600a54610f9f908463ffffffff61198716565b600a5560408051848152905133917f39f13ee9b63dd3ac2e710600c086583db75aed574725071a694419f706d17244919081900360200190a2505050565b610fe633611999565b565b610ff06110ea565b610ff957600080fd5b60015460405160009161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360018054610100600160a81b0319169055565b600a5481565b60095481565b61105e33610be8565b61106757600080fd5b611070816119e1565b50565b61107c33610be8565b61108557600080fd5b60015460ff161561109557600080fd5b6001805460ff1916811790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b60015461010090046001600160a01b031690565b60015461010090046001600160a01b0316331490565b6005602052600090815260409020805460019091015482565b6007546001600160a01b031681565b611130610a4e565b61117c576040805162461bcd60e51b815260206004820152601860248201527714d8da195b59481a5cc81b9bdd081c9959da5cdd195c995960421b604482015290519081900360640190fd5b610fe6611a29565b33600090815260056020526040902080546111d6576040805162461bcd60e51b815260206004820152600d60248201526c139bc8111052481cdd185ad959609a1b604482015290519081900360640190fd5b60075481546040805163852a12e360e01b81526004810192909252516001600160a01b039092169163852a12e3916024808201926020929091908290030181600087803b15801561122657600080fd5b505af115801561123a573d6000803e3d6000fd5b505050506040513d602081101561125057600080fd5b50511561129c576040805162461bcd60e51b81526020600482015260156024820152744661696c656420746f2072656465656d206344616960581b604482015290519081900360640190fd5b805460008255600a546112b5908263ffffffff61160316565b600a55600654604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561130357600080fd5b505afa158015611317573d6000803e3d6000fd5b505050506040513d602081101561132d57600080fd5b505190508181101561133d578091505b6006546040805163a9059cbb60e01b81523360048201526024810185905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561139157600080fd5b505af11580156113a5573d6000803e3d6000fd5b505050506040513d60208110156113bb57600080fd5b505161140e576040805162461bcd60e51b815260206004820152601860248201527f7769746864726177207472616e73666572206661696c65640000000000000000604482015290519081900360640190fd5b6040805183815260208101839052815133927f7441c5625c09ad27ec4eec0984408b247a5ec0cbb33cb619115a4551f71798e7928290030190a2505050565b6002546000906001600160a01b03166114a1576040805162461bcd60e51b8152602060048201526011602482015270105d985d185c881a5cc81b9bdd081cd95d607a1b604482015290519081900360640190fd5b60035460025460408051639be2faed60e01b81526001600160a01b038681166004830152928316602482015290519190921691639be2faed916044808301926020929190829003018186803b1580156114f957600080fd5b505afa15801561150d573d6000803e3d6000fd5b505050506040513d602081101561152357600080fd5b505161153157506000610bfd565b506001919050565b60085481565b60006009546115596008544361169d90919063ffffffff16565b11905090565b600b5463ffffffff1681565b6002546001600160a01b031633146115ca576040805162461bcd60e51b815260206004820181905260248201527f6f6e6c79204176617461722063616e2063616c6c2074686973206d6574686f64604482015290519081900360640190fd5b6115d2611073565b610fe6611c93565b6115e26110ea565b6115eb57600080fd5b61107081611ee8565b6006546001600160a01b031681565b60008282111561161257600080fd5b508082035b92915050565b60008261162c57506000611617565b8282028284828161163957fe5b041461164457600080fd5b9392505050565b600081611671611667856b033b2e3c9fd0803ce8000000611f62565b6002855b04611fc5565b8161167857fe5b049392505050565b60008161168c57600080fd5b81838161169557fe5b069392505050565b60008082116116ab57600080fd5b60008284816116b657fe5b04949350505050565b60006b033b2e3c9fd0803ce80000006116716116db8585611f62565b60026b033b2e3c9fd0803ce800000061166b565b600080600080600b60049054906101000a90046001600160a01b03166001600160a01b0316336001600160a01b03161461175a5760405162461bcd60e51b81526004018080602001828103825260258152602001806121076025913960400191505060405180910390fd5b6001600160a01b0385163014156117a25760405162461bcd60e51b815260040180806020018281038252602881526020018061214f6028913960400191505060405180910390fd5b6117aa61153f565b6117e55760405162461bcd60e51b81526004018080602001828103825260228152602001806121776022913960400191505060405180910390fd5b60008060006117f26107d7565b92509250925061180d6008544361169d90919063ffffffff16565b60095582156118e9576007546040805163a9059cbb60e01b81526001600160a01b038b81166004830152602482018790529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561186c57600080fd5b505af1158015611880573d6000803e3d6000fd5b505050506040513d602081101561189657600080fd5b50516118e9576040805162461bcd60e51b815260206004820152601760248201527f636f6c6c656374207472616e73666572206661696c6564000000000000000000604482015290519081900360640190fd5b604080516001600160a01b038a168152602081018590528082018490526060810183905290517f0abcfa9ece819bcdcfa052a818ce11f0b9fad8b3e3ccd98f120c40be689b690f9181900360800190a1600b549298919750955063ffffffff9091169350915050565b60006001600160a01b03821661196757600080fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b60008282018381101561164457600080fd5b6119aa60008263ffffffff61201416565b6040516001600160a01b038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b6119f260008263ffffffff61205c16565b6040516001600160a01b038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b611a31610a4e565b611a7d576040805162461bcd60e51b815260206004820152601860248201527714d8da195b59481a5cc81b9bdd081c9959da5cdd195c995960421b604482015290519081900360640190fd5b600354600480546040805130602480830191909152825180830382018152604492830184526020810180516001600160e01b0316635f539d6960e01b17815260025494516368db844d60e11b81526001600160a01b039687169781018881529587169481018590526000606482018190526080948201948552835160848301528351979099169863d1b7089a9897939690949093909260a49092019190808383885b83811015611b37578181015183820152602001611b1f565b50505050905090810190601f168015611b645780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611b8657600080fd5b505af1158015611b9a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040908152811015611bc357600080fd5b815160208301805160405192949293830192919084640100000000821115611bea57600080fd5b908301906020820185811115611bff57600080fd5b8251640100000000811182820188101715611c1957600080fd5b82525081516020918201929091019080838360005b83811015611c46578181015183820152602001611c2e565b50505050905090810190601f168015611c735780820380516001836020036101000a031916815260200191505b506040525050600254610fe693506001600160a01b031691506115da9050565b611c9b610a4e565b611ce7576040805162461bcd60e51b815260206004820152601860248201527714d8da195b59481a5cc81b9bdd081c9959da5cdd195c995960421b604482015290519081900360640190fd5b600354600480546040805130602480830191909152825180830382018152604492830184526020810180516001600160e01b031663c375c2ef60e01b17815260025494516368db844d60e11b81526001600160a01b039687169781018881529587169481018590526000606482018190526080948201948552835160848301528351979099169863d1b7089a9897939690949093909260a49092019190808383885b83811015611da1578181015183820152602001611d89565b50505050905090810190601f168015611dce5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611df057600080fd5b505af1158015611e04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040908152811015611e2d57600080fd5b815160208301805160405192949293830192919084640100000000821115611e5457600080fd5b908301906020820185811115611e6957600080fd5b8251640100000000811182820188101715611e8357600080fd5b82525081516020918201929091019080838360005b83811015611eb0578181015183820152602001611e98565b50505050905090810190601f168015611edd5780820380516001836020036101000a031916815260200191505b506040525050505050565b6001600160a01b038116611efb57600080fd5b6001546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000811580611f7d57505080820282828281611f7a57fe5b04145b611617576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820182811015611617576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fd5b6001600160a01b03811661202757600080fd5b6120318282611952565b61203a57600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6001600160a01b03811661206f57600080fd5b6120798282611952565b1561208357600080fd5b6001600160a01b0316600090815260209190915260409020805460ff1916600117905556fe596f75206e65656420746f207374616b65206120706f73697469766520746f6b656e20616d6f756e7463616e207265636f7665722063446169206f6e6c79207768656e207374616b65732068617665206265656e2077697468647261776e4f6e6c792046756e644d616e616765722063616e2063616c6c2074686973206d6574686f644d696e74696e672063446169206661696c65642c2066756e64732072657475726e6564526563697069656e742063616e6e6f7420626520746865207374616b696e6720636f6e74726163744e65656420746f207761697420666f7220746865206e65787420696e74657276616c7472616e7366657246726f6d206661696c65642c206d616b65207375726520796f7520617070726f76656420444149207472616e73666572a265627a7a723158208a11e84222375a61d734e2969efd6ed24e2b3e7374d7f3a4b2322658dfc5976a64736f6c63430005100032",
  "sourceMap": "142:748:45:-;;;443:64:7;;;-1:-1:-1;;;;;;443:64:7;;;505:1;2874:30:29;;3062:43;;;-1:-1:-1;;3062:43:29;3102:3;3062:43;;;204:286:45;5:2:-1;;;;30:1;27;20:12;5:2;204:286:45;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;204:286:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;275:22:72;286:10;-1:-1:-1;;;;;275:10:72;:22;:::i;:::-;352:7:74;:15;;-1:-1:-1;;;;;;515:19:77;352:15:74;524:10:77;515:19;;;;;;;;;;549:40;;-1:-1:-1;;;;;582:6:77;;;;;;-1:-1:-1;;549:40:77;;-1:-1:-1;;549:40:77;688:6:7;:16;;-1:-1:-1;;;;;;688:16:7;-1:-1:-1;;;;;688:16:7;;;;;;;;;;;719:6;:19;715:98;;787:6;;;;;;;;;-1:-1:-1;;;;;787:6:7;-1:-1:-1;;;;;787:12:7;;:14;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;787:14:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;787:14:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;787:14:7;754:10;:48;;-1:-1:-1;;;;;;754:48:7;-1:-1:-1;;;;;754:48:7;;;;;;;;;715:98;-1:-1:-1;;;;;;483:24:11;;475:62;;;;;-1:-1:-1;;;475:62:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;547:8;:20;;-1:-1:-1;;;;;;547:20:11;;;-1:-1:-1;;;;;547:20:11;;;;;;;3943:3:29;:17;;;;;;;;;;3970:4;:20;;;;;;;;;;;;;;-1:-1:-1;;4000:13:29;:30;;;4060:31;:12;4000:30;4060:16;;;;;;;:31;;:::i;:::-;4040:17;:51;4101:11;:26;;-1:-1:-1;;;;;4101:26:29;;;;;-1:-1:-1;;;;;;;;4101:26:29;;;;;;;;;;4212:6;;4194:26;;4212:6;-1:-1:-1;;;;;4194:9:29;:26;:::i;:::-;3715:512;;;;;;204:286:45;;;;;;142:748;;685:119:72;741:21;754:7;741:8;:12;;;;;;:21;;;;:::i;:::-;777:20;;-1:-1:-1;;;;;777:20:72;;;;;;;;685:119;:::o;778:296:76:-;836:7;933:1;929;:5;921:14;;;;;;945:9;961:1;957;:5;;;;;;;778:296;-1:-1:-1;;;;778:296:76:o;508:90:72:-;350:20;359:10;-1:-1:-1;;;;;350:8:72;:20;:::i;:::-;342:29;;;;;;572:19;583:7;-1:-1:-1;;;;;572:10:72;:19;:::i;:::-;508:90;:::o;259:181:70:-;-1:-1:-1;;;;;335:21:70;;327:30;;;;;;376:18;380:4;386:7;-1:-1:-1;;;;;376:3:70;:18;:::i;:::-;375:19;367:28;;;;;;-1:-1:-1;;;;;406:20:70;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;406:27:70;429:4;406:27;;;259:181::o;395:107:72:-;451:4;474:21;487:7;474:8;:12;;;;;;:21;;;;:::i;:::-;467:28;395:107;-1:-1:-1;;395:107:72:o;786:162:70:-;858:4;-1:-1:-1;;;;;882:21:70;;874:30;;;;;;-1:-1:-1;;;;;;921:20:70;:11;:20;;;;;;;;;;;;;;;786:162::o;142:748:45:-;;;;;;;",
  "deployedSourceMap": "142:748:45:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;142:748:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1698:143:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1698:143:7;-1:-1:-1;;;;;1698:143:7;;:::i;:::-;;10834:506:29;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10834:506:29;-1:-1:-1;;;;;10834:506:29;;:::i;7463:1022::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;6920:315;;;:::i;:::-;;;;;;;;;;;;;;;;1987:102:7;;;:::i;:::-;;;;;;;;;;;;;;;;;;4375:107:29;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4375:107:29;-1:-1:-1;;;;;4375:107:29;;:::i;278:24:11:-;;;:::i;:::-;;;;-1:-1:-1;;;;;278:24:11;;;;;;;;;;;;;;496:392:45;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;496:392:45;-1:-1:-1;;;;;496:392:45;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1176:115:74;;;:::i;395:107:72:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;395:107:72;-1:-1:-1;;;;;395:107:72;;:::i;460:76:74:-;;;:::i;2735:168:11:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2735:168:11;-1:-1:-1;;;;;2735:168:11;;:::i;3160:26:29:-;;;:::i;4756:1081::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4756:1081:29;;:::i;604:75:72:-;;;:::i;1347:137:77:-;;;:::i;2874:30:29:-;;;:::i;2784:32::-;;;:::i;508:90:72:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;508:90:72;-1:-1:-1;;;;;508:90:72;;:::i;973:113:74:-;;;:::i;659:77:77:-;;;:::i;979:90::-;;;:::i;1455:41:29:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1455:41:29;-1:-1:-1;;;;;1455:41:29;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2500:18;;;:::i;10311:67::-;;;:::i;5904:885::-;;;:::i;2235:262:7:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2235:262:7;-1:-1:-1;;;;;2235:262:7;;:::i;2665:28:29:-;;;:::i;10035:124::-;;;:::i;3062:43::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10610:81;;;:::i;1655:107:77:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1655:107:77;-1:-1:-1;;;;;1655:107:77;;:::i;2451:16:29:-;;;:::i;1698:143:7:-;863:9:77;:7;:9::i;:::-;855:18;;;;;;1760:6:7;:16;;-1:-1:-1;;;;;;1760:16:7;-1:-1:-1;;;;;1760:16:7;;;;;;;;;;;1819:14;;;-1:-1:-1;;;1819:14:7;;;;:6;;;;;:12;;:14;;;;;;;;;;;;;;;:6;:14;;;5:2:-1;;;;30:1;27;20:12;5:2;1819:14:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1819:14:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1819:14:7;1786:10;:48;;-1:-1:-1;;;;;;1786:48:7;-1:-1:-1;;;;;1786:48:7;;;;;;;;;-1:-1:-1;1698:143:7:o;10834:506:29:-;932:6:7;;-1:-1:-1;;;;;932:6:7;943:10;924:29;916:74;;;;;-1:-1:-1;;;916:74:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10914:31:29;;;-1:-1:-1;;;10914:31:29;;10939:4;10914:31;;;;;;10893:18;;-1:-1:-1;;;;;10914:16:29;;;;;:31;;;;;;;;;;;;;;;:16;:31;;;5:2:-1;;;;30:1;27;20:12;5:2;10914:31:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10914:31:29;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10914:31:29;11072:4;;10914:31;;-1:-1:-1;;;;;;11045:32:29;;;11072:4;;11045:32;11041:203;;;11118:11;;:16;:28;;;;;11138:8;:6;:8::i;:::-;11093:140;;;;-1:-1:-1;;;11093:140:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11285:6;;11261:44;;;-1:-1:-1;;;11261:44:29;;-1:-1:-1;;;;;11285:6:29;;;11261:44;;;;;;;;;;;;:15;;;;;;:44;;;;;;;;;;;;;;;11285:6;11261:15;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;11261:44:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11261:44:29;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11261:44:29;11253:80;;;;;-1:-1:-1;;;11253:80:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;1000:1:7;10834:506:29;:::o;7463:1022::-;7551:7;7572;7593;7625:10;7638:4;;;;;;;;;-1:-1:-1;;;;;7638:4:29;-1:-1:-1;;;;;7638:23:29;;:25;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7638:25:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7638:25:29;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7638:25:29;;-1:-1:-1;7673:16:29;7692:17;:15;:17::i;:::-;7673:36;;7735:11;;7723:8;:23;7719:70;;-1:-1:-1;7770:1:29;;-1:-1:-1;7770:1:29;;-1:-1:-1;7770:1:29;;-1:-1:-1;7762:16:29;;-1:-1:-1;7762:16:29;7719:70;7798:16;7817:25;7830:11;;7817:8;:12;;:25;;;;:::i;:::-;7798:44;-1:-1:-1;7984:17:29;8004:28;8009:18;7798:44;8022:4;8009:18;:12;:18;:::i;:::-;8029:2;8004:4;:28::i;:::-;7984:48;-1:-1:-1;8159:28:29;8190:19;7984:48;8204:4;8190:19;:13;:19;:::i;:::-;8159:50;-1:-1:-1;8267:19:29;:9;8281:4;8267:19;:13;:19;:::i;:::-;8255:31;;8355:24;8382:40;8417:4;8382:30;8387:20;8409:2;8382:4;:30::i;:::-;:34;:40;:34;:40;:::i;:::-;8440:9;;-1:-1:-1;8451:8:29;;-1:-1:-1;8355:67:29;;-1:-1:-1;;;;;7463:1022:29;;;;:::o;6920:315::-;6968:7;6987:10;7000:4;;;;;;;;;-1:-1:-1;;;;;7000:4:29;-1:-1:-1;;;;;7000:23:29;;:25;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7000:25:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7000:25:29;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7000:25:29;7149:4;;:29;;;-1:-1:-1;;;7149:29:29;;7172:4;7149:29;;;;;;7000:25;;-1:-1:-1;7123:18:29;;7144:57;;7198:2;;7144:49;;7149:39;;7183:4;;-1:-1:-1;;;;;7149:4:29;;;;:14;;:29;;;;;7000:25;;7149:29;;;;;;;;:4;:29;;;5:2:-1;;;;30:1;27;20:12;5:2;7149:29:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7149:29:29;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7149:29:29;;:39;:33;:39;:::i;:::-;7190:2;7144:4;:49::i;:57::-;7123:78;-1:-1:-1;;;6920:315:29;:::o;1987:102:7:-;2032:4;2055:27;2076:4;2055:12;:27::i;:::-;2048:34;;1987:102;:::o;4375:107:29:-;932:6:7;;-1:-1:-1;;;;;932:6:7;943:10;924:29;916:74;;;;;-1:-1:-1;;;916:74:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4449:11:29;:26;;-1:-1:-1;;;;;4449:26:29;;;;;-1:-1:-1;;;;;;4449:26:29;;;;;;;;;4375:107::o;278:24:11:-;;;-1:-1:-1;;;;;278:24:11;;:::o;496:392:45:-;612:7;633;654;675:6;3250:11:29;;;;;;;;;-1:-1:-1;;;;;3250:11:29;-1:-1:-1;;;;;3236:25:29;:10;-1:-1:-1;;;;;3236:25:29;;3228:75;;;;-1:-1:-1;;;3228:75:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;707:17:45;726:16;744:24;774:48;812:9;774:37;:48::i;:::-;-1:-1:-1;706:116:45;;;;-1:-1:-1;706:116:45;;-1:-1:-1;879:1:45;;-1:-1:-1;496:392:45;-1:-1:-1;;;;;496:392:45:o;1176:115:74:-;350:20:72;359:10;350:8;:20::i;:::-;342:29;;;;;;860:7:74;;;;852:16;;;;;;1234:7;:15;;-1:-1:-1;;1234:15:74;;;1264:20;;;1273:10;1264:20;;;;;;;;;;;;;1176:115::o;395:107:72:-;451:4;474:21;451:4;487:7;474:21;:12;:21;:::i;:::-;467:28;;395:107;;;;:::o;460:76:74:-;522:7;;;;460:76;:::o;2735:168:11:-;863:9:77;:7;:9::i;:::-;855:18;;;;;;2811:9:11;-1:-1:-1;;;;;2811:22:11;;:24;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2811:24:11;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2811:24:11;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2811:24:11;2803:63;;;;;-1:-1:-1;;;2803:63:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;2876:8;:20;;-1:-1:-1;;;;;;2876:20:11;-1:-1:-1;;;;;2876:20:11;;;;;;;;;;2735:168::o;3160:26:29:-;;;;;;-1:-1:-1;;;;;3160:26:29;;:::o;4756:1081::-;689:7:74;;;;688:8;680:17;;;;;;4840:1:29;4830:7;:11;4822:65;;;;-1:-1:-1;;;4822:65:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4918:3;;:52;;;-1:-1:-1;;;4918:52:29;;4935:10;4918:52;;;;4955:4;4918:52;;;;;;;;;;;;-1:-1:-1;;;;;4918:3:29;;;;:16;;:52;;;;;;;;;;;;;;;:3;;:52;;;5:2:-1;;;;30:1;27;20:12;5:2;4918:52:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4918:52:29;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4918:52:29;:60;;4974:4;4918:60;4897:163;;;;-1:-1:-1;;;4897:163:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5111:3;;5131:4;;5111:35;;;-1:-1:-1;;;5111:35:29;;-1:-1:-1;;;;;5131:4:29;;;5111:35;;;;;;;;;;;;:3;;;;;:11;;:35;;;;;;;;;;;;;;:3;;:35;;;5:2:-1;;;;30:1;27;20:12;5:2;5111:35:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5111:35:29;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;5195:4:29;;:18;;;-1:-1:-1;;;5195:18:29;;;;;;;;;;5181:11;;-1:-1:-1;;;;;5195:4:29;;:9;;:18;;;;;5111:35;;5195:18;;;;;;;5181:11;5195:4;:18;;;5:2:-1;;;;30:1;27;20:12;5:2;5195:18:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5195:18:29;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5195:18:29;;-1:-1:-1;5402:7:29;;5398:94;;5433:8;;5425:56;;;;-1:-1:-1;;;5425:56:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5571:10;5539:21;5563:19;;;:7;:19;;;;;5611:16;;:29;;5632:7;5611:29;:20;:29;:::i;:::-;5592:48;;5669:12;5650:16;;;:31;5760:11;;:24;;5776:7;5760:24;:15;:24;:::i;:::-;5746:11;:38;5800:30;;;;;;;;5810:10;;5800:30;;;;;;;;;;707:1:74;;4756:1081:29;:::o;604:75:72:-;647:25;661:10;647:13;:25::i;:::-;604:75::o;1347:137:77:-;863:9;:7;:9::i;:::-;855:18;;;;;;1429:6;;1408:40;;1445:1;;1429:6;;;-1:-1:-1;;;;;1429:6:77;;1408:40;;1445:1;;1408:40;1458:6;:19;;-1:-1:-1;;;;;;1458:19:77;;;1347:137::o;2874:30:29:-;;;;:::o;2784:32::-;;;;:::o;508:90:72:-;350:20;359:10;350:8;:20::i;:::-;342:29;;;;;;572:19;583:7;572:10;:19::i;:::-;508:90;:::o;973:113:74:-;350:20:72;359:10;350:8;:20::i;:::-;342:29;;;;;;689:7:74;;;;688:8;680:17;;;;;;1042:4;1032:14;;-1:-1:-1;;1032:14:74;;;;;1061:18;;;1068:10;1061:18;;;;;;;;;;;;;973:113::o;659:77:77:-;723:6;;;;;-1:-1:-1;;;;;723:6:77;;659:77::o;979:90::-;1056:6;;;;;-1:-1:-1;;;;;1056:6:77;1042:10;:20;;979:90::o;1455:41:29:-;;;;;;;;;;;;;;;;;;;:::o;2500:18::-;;;-1:-1:-1;;;;;2500:18:29;;:::o;10311:67::-;1121:14:7;:12;:14::i;:::-;1113:51;;;;;-1:-1:-1;;;1113:51:7;;;;;;;;;;;;-1:-1:-1;;;1113:51:7;;;;;;;;;;;;;;;10360:11:29;:9;:11::i;5904:885::-;5978:10;5946:21;5970:19;;;:7;:19;;;;;6007:16;;5999:46;;;;;-1:-1:-1;;;5999:46:29;;;;;;;;;;;;-1:-1:-1;;;5999:46:29;;;;;;;;;;;;;;;6063:4;;6085:16;;6063:39;;;-1:-1:-1;;;6063:39:29;;;;;;;;;;-1:-1:-1;;;;;6063:4:29;;;;:21;;:39;;;;;;;;;;;;;;;:4;;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;6063:39:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6063:39:29;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6063:39:29;:44;6055:78;;;;;-1:-1:-1;;;6055:78:29;;;;;;;;;;;;-1:-1:-1;;;6055:78:29;;;;;;;;;;;;;;;6165:16;;6143:19;6255:20;;6300:11;;:28;;6165:16;6300:28;:15;:28;:::i;:::-;6286:11;:42;6517:3;;:28;;;-1:-1:-1;;;6517:28:29;;6539:4;6517:28;;;;;;6497:17;;-1:-1:-1;;;;;6517:3:29;;:13;;:28;;;;;;;;;;;;;;:3;:28;;;5:2:-1;;;;30:1;27;20:12;5:2;6517:28:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6517:28:29;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6517:28:29;;-1:-1:-1;6559:23:29;;;6555:77;;;6612:9;6598:23;;6555:77;6649:3;;:37;;;-1:-1:-1;;;6649:37:29;;6662:10;6649:37;;;;;;;;;;;;-1:-1:-1;;;;;6649:3:29;;;;:12;;:37;;;;;;;;;;;;;;;:3;;:37;;;5:2:-1;;;;30:1;27;20:12;5:2;6649:37:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6649:37:29;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6649:37:29;6641:74;;;;;-1:-1:-1;;;6641:74:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;6730:52;;;;;;;;;;;;;;6747:10;;6730:52;;;;;;;;5904:885;;;:::o;2235:262:7:-;2318:6;;2294:4;;-1:-1:-1;;;;;2318:6:7;2310:49;;;;;-1:-1:-1;;;2310:49:7;;;;;;;;;;;;-1:-1:-1;;;2310:49:7;;;;;;;;;;;;;;;2376:10;;2422:6;;2376:54;;;-1:-1:-1;;;2376:54:7;;-1:-1:-1;;;;;2376:54:7;;;;;;;2422:6;;;2376:54;;;;;;:10;;;;;:29;;:54;;;;;;;;;;;;;;:10;:54;;;5:2:-1;;;;30:1;27;20:12;5:2;2376:54:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2376:54:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2376:54:7;2370:100;;-1:-1:-1;2454:5:7;2447:12;;2370:100;-1:-1:-1;2486:4:7;2235:262;;;:::o;2665:28:29:-;;;;:::o;10035:124::-;10078:4;10135:17;;10101:31;10118:13;;10101:12;:16;;:31;;;;:::i;:::-;:51;10094:58;;10035:124;:::o;3062:43::-;;;;;;:::o;10610:81::-;932:6:7;;-1:-1:-1;;;;;932:6:7;943:10;924:29;916:74;;;;;-1:-1:-1;;;916:74:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10653:7:29;:5;:7::i;:::-;10670:14;:12;:14::i;1655:107:77:-;863:9;:7;:9::i;:::-;855:18;;;;;;1727:28;1746:8;1727:18;:28::i;2451:16:29:-;;;-1:-1:-1;;;;;2451:16:29;;:::o;1205:145:76:-;1263:7;1295:1;1290;:6;;1282:15;;;;;;-1:-1:-1;1319:5:76;;;1205:145;;;;;:::o;229:421::-;287:7;527:6;523:45;;-1:-1:-1;556:1:76;549:8;;523:45;590:5;;;594:1;590;:5;:1;613:5;;;;;:10;605:19;;;;;;642:1;229:421;-1:-1:-1;;;229:421:76:o;2069:118:0:-;2128:9;2179:1;2153:23;2157:11;2161:1;1683:6;2157:3;:11::i;:::-;2174:1;2170;:5;;2153:3;:23::i;:::-;:27;;;;;;;2069:118;-1:-1:-1;;;2069:118:0:o;1728:121:76:-;1786:7;1813:6;1805:15;;;;;;1841:1;1837;:5;;;;;;;1728:121;-1:-1:-1;;;1728:121:76:o;778:296::-;836:7;933:1;929;:5;921:14;;;;;;945:9;961:1;957;:5;;;;;;;778:296;-1:-1:-1;;;;778:296:76:o;1821:120:0:-;1880:9;1683:6;1905:23;1909:9;1913:1;1916;1909:3;:9::i;:::-;1926:1;1683:6;1920:7;;8886:917:29;9003:7;9024;9045;9066:6;3250:11;;;;;;;;;-1:-1:-1;;;;;3250:11:29;-1:-1:-1;;;;;3236:25:29;:10;-1:-1:-1;;;;;3236:25:29;;3228:75;;;;-1:-1:-1;;;3228:75:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9173:27:29;;9195:4;9173:27;;9165:80;;;;-1:-1:-1;;;9165:80:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9264:12;:10;:12::i;:::-;9256:59;;;;-1:-1:-1;;;9256:59:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9340:17;9371:16;9401:24;9438:20;:18;:20::i;:::-;9326:132;;;;;;9488:31;9505:13;;9488:12;:16;;:31;;;;:::i;:::-;9468:17;:51;9533:13;;9529:103;;9568:4;;:36;;;-1:-1:-1;;;9568:36:29;;-1:-1:-1;;;;;9568:36:29;;;;;;;;;;;;;;;:4;;;;;:13;;:36;;;;;;;;;;;;;;:4;;:36;;;5:2:-1;;;;30:1;27;20:12;5:2;9568:36:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9568:36:29;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9568:36:29;9560:72;;;;;-1:-1:-1;;;9560:72:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;9647:68;;;-1:-1:-1;;;;;9647:68:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9772:23;;9733:9;;9744:8;;-1:-1:-1;9744:8:29;-1:-1:-1;9772:23:29;;;;;-1:-1:-1;8886:917:29;-1:-1:-1;;8886:917:29:o;786:162:70:-;858:4;-1:-1:-1;;;;;882:21:70;;874:30;;;;;;-1:-1:-1;;;;;;921:20:70;:11;:20;;;;;;;;;;;;;;;786:162::o;1431:145:76:-;1489:7;1520:5;;;1543:6;;;;1535:15;;;;;810:127:72;869:24;:8;885:7;869:24;:15;:24;:::i;:::-;908:22;;-1:-1:-1;;;;;908:22:72;;;;;;;;810:127;:::o;685:119::-;741:21;:8;754:7;741:21;:12;:21;:::i;:::-;777:20;;-1:-1:-1;;;;;777:20:72;;;;;;;;685:119;:::o;786:280:5:-;1121:14:7;:12;:14::i;:::-;1113:51;;;;;-1:-1:-1;;;1113:51:7;;;;;;;;;;;;-1:-1:-1;;;1113:51:7;;;;;;;;;;;;;;;841:10:5;;885:8;;;908:62;;;964:4;908:62;;;;;;;;;;26:21:-1;;;22:32;;6:49;;908:62:5;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;984:6:5;;841:174;;-1:-1:-1;;;841:174:5;;-1:-1:-1;;;;;885:8:5;;;841:174;;;;;;984:6;;;841:174;;;;;;:10;:174;;;;;;;;;;;;;;;;;;;;;:10;;;;;:22;;885:8;908:62;;841:10;;:174;;;;;;;;;25:18:-1;841:174:5;;25:18:-1;841:10:5;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;841:174:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;841:174:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;841:174:5;;;;;;39:16:-1;36:1;17:17;2:54;101:4;841:174:5;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;;;5:11;;2:2;;;29:1;26;19:12;2:2;841:174:5;;;;;;;;;;;;;;;;;;;19:11:-1;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;841:174:5;;420:4:-1;411:14;;;;841:174:5;;;;;411:14:-1;841:174:5;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;841:174:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;841:174:5;;-1:-1:-1;;1051:6:5;;1025:34;;-1:-1:-1;;;;;;1051:6:5;;-1:-1:-1;1025:17:5;;-1:-1:-1;1025:34:5:i;1195:242::-;1121:14:7;:12;:14::i;:::-;1113:51;;;;;-1:-1:-1;;;1113:51:7;;;;;;;;;;;;-1:-1:-1;;;1113:51:7;;;;;;;;;;;;;;;1253:10:5;;1297:8;;;1320:65;;;1379:4;1320:65;;;;;;;;;;26:21:-1;;;22:32;;6:49;;1320:65:5;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1399:6:5;;1253:177;;-1:-1:-1;;;1253:177:5;;-1:-1:-1;;;;;1297:8:5;;;1253:177;;;;;;1399:6;;;1253:177;;;;;;:10;:177;;;;;;;;;;;;;;;;;;;;;:10;;;;;:22;;1297:8;1320:65;;1253:10;;:177;;;;;;;;;25:18:-1;1253:177:5;;25:18:-1;1253:10:5;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1253:177:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1253:177:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1253:177:5;;;;;;39:16:-1;36:1;17:17;2:54;101:4;1253:177:5;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;;;5:11;;2:2;;;29:1;26;19:12;2:2;1253:177:5;;;;;;;;;;;;;;;;;;;19:11:-1;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;1253:177:5;;420:4:-1;411:14;;;;1253:177:5;;;;;411:14:-1;1253:177:5;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1253:177:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1195:242::o;1906:183:77:-;-1:-1:-1;;;;;1979:22:77;;1971:31;;;;;;2038:6;;2017:38;;-1:-1:-1;;;;;2017:38:77;;;;2038:6;;;;;2017:38;;;;;2065:6;:17;;-1:-1:-1;;;;;2065:17:77;;;;;-1:-1:-1;;;;;;2065:17:77;;;;;;;;;1906:183::o;1025:149:0:-;1083:9;1112:6;;;:30;;-1:-1:-1;;1127:5:0;;;1141:1;1136;1127:5;1136:1;1122:15;;;;;:20;1112:30;1104:63;;;;;-1:-1:-1;;;1104:63:0;;;;;;;;;;;;-1:-1:-1;;;1104:63:0;;;;;;;;;;;;;;744:135;836:5;;;831:16;;;;823:49;;;;;-1:-1:-1;;;823:49:0;;;;;;;;;;;;-1:-1:-1;;;823:49:0;;;;;;;;;;;;;;514:184:70;-1:-1:-1;;;;;593:21:70;;585:30;;;;;;633:18;637:4;643:7;633:3;:18::i;:::-;625:27;;;;;;-1:-1:-1;;;;;663:20:70;686:5;663:20;;;;;;;;;;;:28;;-1:-1:-1;;663:28:70;;;514:184::o;259:181::-;-1:-1:-1;;;;;335:21:70;;327:30;;;;;;376:18;380:4;386:7;376:3;:18::i;:::-;375:19;367:28;;;;;;-1:-1:-1;;;;;406:20:70;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;406:27:70;429:4;406:27;;;259:181::o",
  "source": "pragma solidity >0.5.4;\n\nimport \"../SimpleDAIStaking.sol\";\n\n/**\n * @title A SimpleDAIStaking mock.\n * return 0 donation ratio on collect.\n */\ncontract SimpleDAIStakingNoDonation is SimpleDAIStaking {\n    constructor(\n        address _dai,\n        address _cDai,\n        address _fundManager,\n        uint256 _blockInterval,\n        Avatar _avatar,\n        Identity _identity\n    )\n        public\n        SimpleDAIStaking(_dai, _cDai, _fundManager, _blockInterval, _avatar, _identity)\n    {}\n\n    function collectUBIInterest(address recipient)\n        public\n        onlyFundManager\n        returns (\n            uint256,\n            uint256,\n            uint256,\n            uint32\n        )\n    {\n        (uint256 cdaiGains, uint256 daiGains, uint256 precisionLossDai, ) = super\n            .collectUBIInterest(recipient);\n        return (cdaiGains, daiGains, precisionLossDai, 0);\n    }\n}\n",
  "sourcePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/stakingModel/contracts/mocks/SimpleDAIStakingNoDonation.sol",
  "ast": {
    "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/stakingModel/contracts/mocks/SimpleDAIStakingNoDonation.sol",
    "exportedSymbols": {
      "SimpleDAIStakingNoDonation": [
        11881
      ]
    },
    "id": 11882,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 11820,
        "literals": [
          "solidity",
          ">",
          "0.5",
          ".4"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:45"
      },
      {
        "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/stakingModel/contracts/SimpleDAIStaking.sol",
        "file": "../SimpleDAIStaking.sol",
        "id": 11821,
        "nodeType": "ImportDirective",
        "scope": 11882,
        "sourceUnit": 9741,
        "src": "25:33:45",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 11822,
              "name": "SimpleDAIStaking",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9740,
              "src": "181:16:45",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SimpleDAIStaking_$9740",
                "typeString": "contract SimpleDAIStaking"
              }
            },
            "id": 11823,
            "nodeType": "InheritanceSpecifier",
            "src": "181:16:45"
          }
        ],
        "contractDependencies": [
          303,
          1227,
          1423,
          2667,
          9740,
          20947,
          21111,
          21417
        ],
        "contractKind": "contract",
        "documentation": "@title A SimpleDAIStaking mock.\nreturn 0 donation ratio on collect.",
        "fullyImplemented": true,
        "id": 11881,
        "linearizedBaseContracts": [
          11881,
          9740,
          1227,
          2667,
          1423,
          21417,
          21111,
          20947,
          303
        ],
        "name": "SimpleDAIStakingNoDonation",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 11846,
              "nodeType": "Block",
              "src": "488:2:45",
              "statements": []
            },
            "documentation": null,
            "id": 11847,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 11838,
                    "name": "_dai",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11825,
                    "src": "421:4:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 11839,
                    "name": "_cDai",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11827,
                    "src": "427:5:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 11840,
                    "name": "_fundManager",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11829,
                    "src": "434:12:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 11841,
                    "name": "_blockInterval",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11831,
                    "src": "448:14:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 11842,
                    "name": "_avatar",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11833,
                    "src": "464:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$12705",
                      "typeString": "contract Avatar"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 11843,
                    "name": "_identity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11835,
                    "src": "473:9:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Identity_$2380",
                      "typeString": "contract Identity"
                    }
                  }
                ],
                "id": 11844,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 11837,
                  "name": "SimpleDAIStaking",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9740,
                  "src": "404:16:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_SimpleDAIStaking_$9740_$",
                    "typeString": "type(contract SimpleDAIStaking)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "404:79:45"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11836,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11825,
                  "name": "_dai",
                  "nodeType": "VariableDeclaration",
                  "scope": 11847,
                  "src": "225:12:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11824,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "225:7:45",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11827,
                  "name": "_cDai",
                  "nodeType": "VariableDeclaration",
                  "scope": 11847,
                  "src": "247:13:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11826,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "247:7:45",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11829,
                  "name": "_fundManager",
                  "nodeType": "VariableDeclaration",
                  "scope": 11847,
                  "src": "270:20:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11828,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "270:7:45",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11831,
                  "name": "_blockInterval",
                  "nodeType": "VariableDeclaration",
                  "scope": 11847,
                  "src": "300:22:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11830,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "300:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11833,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 11847,
                  "src": "332:14:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Avatar_$12705",
                    "typeString": "contract Avatar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11832,
                    "name": "Avatar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12705,
                    "src": "332:6:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$12705",
                      "typeString": "contract Avatar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11835,
                  "name": "_identity",
                  "nodeType": "VariableDeclaration",
                  "scope": 11847,
                  "src": "356:18:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Identity_$2380",
                    "typeString": "contract Identity"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11834,
                    "name": "Identity",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2380,
                    "src": "356:8:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Identity_$2380",
                      "typeString": "contract Identity"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "215:165:45"
            },
            "returnParameters": {
              "id": 11845,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "488:0:45"
            },
            "scope": 11881,
            "src": "204:286:45",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11879,
              "nodeType": "Block",
              "src": "696:192:45",
              "statements": [
                {
                  "assignments": [
                    11863,
                    11865,
                    11867,
                    null
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11863,
                      "name": "cdaiGains",
                      "nodeType": "VariableDeclaration",
                      "scope": 11879,
                      "src": "707:17:45",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11862,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "707:7:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11865,
                      "name": "daiGains",
                      "nodeType": "VariableDeclaration",
                      "scope": 11879,
                      "src": "726:16:45",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11864,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "726:7:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11867,
                      "name": "precisionLossDai",
                      "nodeType": "VariableDeclaration",
                      "scope": 11879,
                      "src": "744:24:45",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11866,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "744:7:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    null
                  ],
                  "id": 11872,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11870,
                        "name": "recipient",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11849,
                        "src": "812:9:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11868,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22360,
                        "src": "774:5:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_super$_SimpleDAIStakingNoDonation_$11881",
                          "typeString": "contract super SimpleDAIStakingNoDonation"
                        }
                      },
                      "id": 11869,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "collectUBIInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9657,
                      "src": "774:37:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint32_$",
                        "typeString": "function (address) returns (uint256,uint256,uint256,uint32)"
                      }
                    },
                    "id": 11871,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "774:48:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint32_$",
                      "typeString": "tuple(uint256,uint256,uint256,uint32)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "706:116:45"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 11873,
                        "name": "cdaiGains",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11863,
                        "src": "840:9:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11874,
                        "name": "daiGains",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11865,
                        "src": "851:8:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11875,
                        "name": "precisionLossDai",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11867,
                        "src": "861:16:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 11876,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "879:1:45",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "id": 11877,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "839:42:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_rational_0_by_1_$",
                      "typeString": "tuple(uint256,uint256,uint256,int_const 0)"
                    }
                  },
                  "functionReturnParameters": 11861,
                  "id": 11878,
                  "nodeType": "Return",
                  "src": "832:49:45"
                }
              ]
            },
            "documentation": null,
            "id": 11880,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 11852,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 11851,
                  "name": "onlyFundManager",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9230,
                  "src": "566:15:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "566:15:45"
              }
            ],
            "name": "collectUBIInterest",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11850,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11849,
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 11880,
                  "src": "524:17:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11848,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "524:7:45",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "523:19:45"
            },
            "returnParameters": {
              "id": 11861,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11854,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11880,
                  "src": "612:7:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11853,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "612:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11856,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11880,
                  "src": "633:7:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11855,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "633:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11858,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11880,
                  "src": "654:7:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11857,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "654:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11860,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11880,
                  "src": "675:6:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 11859,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "675:6:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "598:93:45"
            },
            "scope": 11881,
            "src": "496:392:45",
            "stateMutability": "nonpayable",
            "superFunction": 9657,
            "visibility": "public"
          }
        ],
        "scope": 11882,
        "src": "142:748:45"
      }
    ],
    "src": "0:891:45"
  },
  "legacyAST": {
    "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/stakingModel/contracts/mocks/SimpleDAIStakingNoDonation.sol",
    "exportedSymbols": {
      "SimpleDAIStakingNoDonation": [
        11881
      ]
    },
    "id": 11882,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 11820,
        "literals": [
          "solidity",
          ">",
          "0.5",
          ".4"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:45"
      },
      {
        "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/stakingModel/contracts/SimpleDAIStaking.sol",
        "file": "../SimpleDAIStaking.sol",
        "id": 11821,
        "nodeType": "ImportDirective",
        "scope": 11882,
        "sourceUnit": 9741,
        "src": "25:33:45",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 11822,
              "name": "SimpleDAIStaking",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9740,
              "src": "181:16:45",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SimpleDAIStaking_$9740",
                "typeString": "contract SimpleDAIStaking"
              }
            },
            "id": 11823,
            "nodeType": "InheritanceSpecifier",
            "src": "181:16:45"
          }
        ],
        "contractDependencies": [
          303,
          1227,
          1423,
          2667,
          9740,
          20947,
          21111,
          21417
        ],
        "contractKind": "contract",
        "documentation": "@title A SimpleDAIStaking mock.\nreturn 0 donation ratio on collect.",
        "fullyImplemented": true,
        "id": 11881,
        "linearizedBaseContracts": [
          11881,
          9740,
          1227,
          2667,
          1423,
          21417,
          21111,
          20947,
          303
        ],
        "name": "SimpleDAIStakingNoDonation",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 11846,
              "nodeType": "Block",
              "src": "488:2:45",
              "statements": []
            },
            "documentation": null,
            "id": 11847,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 11838,
                    "name": "_dai",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11825,
                    "src": "421:4:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 11839,
                    "name": "_cDai",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11827,
                    "src": "427:5:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 11840,
                    "name": "_fundManager",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11829,
                    "src": "434:12:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 11841,
                    "name": "_blockInterval",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11831,
                    "src": "448:14:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 11842,
                    "name": "_avatar",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11833,
                    "src": "464:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$12705",
                      "typeString": "contract Avatar"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 11843,
                    "name": "_identity",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11835,
                    "src": "473:9:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Identity_$2380",
                      "typeString": "contract Identity"
                    }
                  }
                ],
                "id": 11844,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 11837,
                  "name": "SimpleDAIStaking",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9740,
                  "src": "404:16:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_SimpleDAIStaking_$9740_$",
                    "typeString": "type(contract SimpleDAIStaking)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "404:79:45"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11836,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11825,
                  "name": "_dai",
                  "nodeType": "VariableDeclaration",
                  "scope": 11847,
                  "src": "225:12:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11824,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "225:7:45",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11827,
                  "name": "_cDai",
                  "nodeType": "VariableDeclaration",
                  "scope": 11847,
                  "src": "247:13:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11826,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "247:7:45",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11829,
                  "name": "_fundManager",
                  "nodeType": "VariableDeclaration",
                  "scope": 11847,
                  "src": "270:20:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11828,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "270:7:45",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11831,
                  "name": "_blockInterval",
                  "nodeType": "VariableDeclaration",
                  "scope": 11847,
                  "src": "300:22:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11830,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "300:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11833,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 11847,
                  "src": "332:14:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Avatar_$12705",
                    "typeString": "contract Avatar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11832,
                    "name": "Avatar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12705,
                    "src": "332:6:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$12705",
                      "typeString": "contract Avatar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11835,
                  "name": "_identity",
                  "nodeType": "VariableDeclaration",
                  "scope": 11847,
                  "src": "356:18:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Identity_$2380",
                    "typeString": "contract Identity"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11834,
                    "name": "Identity",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2380,
                    "src": "356:8:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Identity_$2380",
                      "typeString": "contract Identity"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "215:165:45"
            },
            "returnParameters": {
              "id": 11845,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "488:0:45"
            },
            "scope": 11881,
            "src": "204:286:45",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11879,
              "nodeType": "Block",
              "src": "696:192:45",
              "statements": [
                {
                  "assignments": [
                    11863,
                    11865,
                    11867,
                    null
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11863,
                      "name": "cdaiGains",
                      "nodeType": "VariableDeclaration",
                      "scope": 11879,
                      "src": "707:17:45",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11862,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "707:7:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11865,
                      "name": "daiGains",
                      "nodeType": "VariableDeclaration",
                      "scope": 11879,
                      "src": "726:16:45",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11864,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "726:7:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 11867,
                      "name": "precisionLossDai",
                      "nodeType": "VariableDeclaration",
                      "scope": 11879,
                      "src": "744:24:45",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11866,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "744:7:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    null
                  ],
                  "id": 11872,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11870,
                        "name": "recipient",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11849,
                        "src": "812:9:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11868,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22360,
                        "src": "774:5:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_super$_SimpleDAIStakingNoDonation_$11881",
                          "typeString": "contract super SimpleDAIStakingNoDonation"
                        }
                      },
                      "id": 11869,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "collectUBIInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9657,
                      "src": "774:37:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint32_$",
                        "typeString": "function (address) returns (uint256,uint256,uint256,uint32)"
                      }
                    },
                    "id": 11871,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "774:48:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint32_$",
                      "typeString": "tuple(uint256,uint256,uint256,uint32)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "706:116:45"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 11873,
                        "name": "cdaiGains",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11863,
                        "src": "840:9:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11874,
                        "name": "daiGains",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11865,
                        "src": "851:8:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11875,
                        "name": "precisionLossDai",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11867,
                        "src": "861:16:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 11876,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "879:1:45",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "id": 11877,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "839:42:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_rational_0_by_1_$",
                      "typeString": "tuple(uint256,uint256,uint256,int_const 0)"
                    }
                  },
                  "functionReturnParameters": 11861,
                  "id": 11878,
                  "nodeType": "Return",
                  "src": "832:49:45"
                }
              ]
            },
            "documentation": null,
            "id": 11880,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 11852,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 11851,
                  "name": "onlyFundManager",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9230,
                  "src": "566:15:45",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "566:15:45"
              }
            ],
            "name": "collectUBIInterest",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11850,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11849,
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 11880,
                  "src": "524:17:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11848,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "524:7:45",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "523:19:45"
            },
            "returnParameters": {
              "id": 11861,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11854,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11880,
                  "src": "612:7:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11853,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "612:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11856,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11880,
                  "src": "633:7:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11855,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "633:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11858,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11880,
                  "src": "654:7:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11857,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "654:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11860,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11880,
                  "src": "675:6:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 11859,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "675:6:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "598:93:45"
            },
            "scope": 11881,
            "src": "496:392:45",
            "stateMutability": "nonpayable",
            "superFunction": 9657,
            "visibility": "public"
          }
        ],
        "scope": 11882,
        "src": "142:748:45"
      }
    ],
    "src": "0:891:45"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.16+commit.9c3226ce.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.2.2",
  "updatedAt": "2021-08-23T07:33:52.371Z",
  "devdoc": {
    "methods": {
      "canCollect()": {
        "details": "Checks if enough blocks have passed so it would be possible to execute `collectUBIInterest` according to the length of `blockInterval`",
        "return": "(bool) True if enough blocks have passed"
      },
      "currentDAIWorth()": {
        "details": "Calculates the worth of the staked cDAI tokens in DAI.",
        "return": "(uint256) The worth in DAI"
      },
      "currentUBIInterest()": {
        "details": "Calculates the current interest that was gained.",
        "return": "(uint256, uint256, uint256) The interest in cDAI, the interest in DAI, the amount which is not covered by precision of DAI"
      },
      "end()": {
        "details": "making the contract inactive NOTICE: this could theoretically result in future interest earned in cdai to remain locked but we dont expect any other stakers but us in SimpleDAIStaking"
      },
      "isOwner()": {
        "return": "true if `msg.sender` is the owner of the contract."
      },
      "isRegistered()": {
        "details": "function to see if an avatar has been set and if this scheme is registered",
        "return": "true if scheme is registered"
      },
      "isRegistered(address)": {
        "details": "function to see if an avatar has been set and if this scheme is registered",
        "return": "true if scheme is registered"
      },
      "owner()": {
        "return": "the address of the owner."
      },
      "pause()": {
        "details": "called by the owner to pause, triggers stopped state"
      },
      "paused()": {
        "return": "true if the contract is paused, false otherwise."
      },
      "recover(address)": {
        "details": "method to recover any stuck erc20 tokens (ie  compound COMP)",
        "params": {
          "_token": "the ERC20 token to recover"
        }
      },
      "renounceOwnership()": {
        "details": "Allows the current owner to relinquish control of the contract."
      },
      "setAvatar(address)": {
        "details": "Function to set a new avatar and controller for scheme can only be done by owner of scheme"
      },
      "setFundManager(address)": {
        "details": "Allows the DAO to change the fund manager contract address",
        "params": {
          "_fundManager": "Address of the new contract"
        }
      },
      "stakeDAI(uint256)": {
        "details": "Allows a staker to deposit DAI tokens. Notice that `approve` is needed to be executed before the execution of this method. Can be executed only when the contract is not paused.",
        "params": {
          "_amount": "The amount of DAI to stake"
        }
      },
      "start()": {
        "details": "Start function. Adds this contract to identity as a feeless scheme. Can only be called if scheme is registered"
      },
      "transferOwnership(address)": {
        "details": "Allows the current owner to transfer control of the contract to a newOwner.",
        "params": {
          "newOwner": "The address to transfer ownership to."
        }
      },
      "unpause()": {
        "details": "called by the owner to unpause, returns to normal state"
      },
      "withdrawStake()": {
        "details": "Withdraws the sender staked DAI."
      }
    },
    "title": "A SimpleDAIStaking mock. return 0 donation ratio on collect."
  },
  "userdoc": {
    "methods": {
      "renounceOwnership()": {
        "notice": "Renouncing to ownership will leave the contract without an owner. It will not be possible to call the functions with the `onlyOwner` modifier anymore."
      }
    }
  }
}