contract MinosCoin is ERC20, Burnable, Freezable, Ownable {

  string public constant name = "MinosCoin";
  string public constant symbol = "MNS";
  uint8 public constant decimals = 18;

  // Initial supply is the balance assigned to the owner
  uint256 private constant _initialSupply = 300000000 * (10 ** uint256(decimals));

  /**
   * @dev Constructor
   */
  constructor() 
    public 
    ERC20(_initialSupply)
  {
    require(msg.sender != address(0), "MinosCoin: Create contract from the zero address");
  }
  
  /**
   * @dev Allows to transfer out the ether balance that was sent into this contract
   */
  function withdrawEther() public onlyOwner {
    uint256 totalBalance = address(this).balance;
    require(totalBalance > 0, "MinosCoin: No ether available to be withdrawn");
    msg.sender.transfer(totalBalance);
  }
}
/**
 * @title MinosCoin 
 * @dev Contract for MinosCoin token
 **/
function withdrawEther() public onlyOwner {
  uint256 totalBalance = address(this).balance;
  require(totalBalance > 0, "MinosCoin: No ether available to be withdrawn");
  msg.sender.transfer(totalBalance);
}

/**
 * @dev Allows to transfer out the ether balance that was sent into this contract
 */