contract MIMI is  ERC20Mintable,ERC20Pausable{
    string public name;
    uint8  public decimals;
    string public symbol;
    uint256 private _cap;

    constructor (string memory _name,string memory _symbol,uint8 _decimals) public {
        decimals = _decimals;
        name = _name;
        symbol = _symbol;
        _cap = 10000000000000000000000000000;
    }

    /**
     * @return the cap for the token minting.
     */
    function cap() public view returns (uint256) {
        return _cap;
    }

    function _mint(address account, uint256 value) internal {
        require(totalSupply().add(value) <= _cap);
        super._mint(account, value);
    }    
  
}
function cap() public view returns (uint256) {
    return _cap;
}

/**
 * @return the cap for the token minting.
 */