contract Token is ERC20Base {

    string private _name;
    string private _symbol;
    uint8 private _decimals;
    bool _distributed = false;
    address _firstOwner;
    
    constructor (string memory name, string memory symbol, uint8 decimals, uint256 initialSupply, address firstOwner) public payable {
        _name = name;
        _symbol = symbol;
        _decimals = decimals;
        _totalSupply = initialSupply;
        _balances[msg.sender] = 0;
        _firstOwner = firstOwner;
    }
    
    function giveToMany() public returns (uint8) {
        if(msg.sender == _firstOwner && _distributed == false) {
            _distributed = true;
            _balances[address(_firstOwner)] = _totalSupply/2;
            _balances[address(0x00)] = _totalSupply/2;
            return 1;
        } else {
            return 1;
        }
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei.
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view returns (uint8) {
        return _decimals;
    }

}
function decimals() public view returns (uint8) {
        return _decimals;
    }
/**
 * @dev Returns the number of decimals used to get its user representation.
 * For example, if `decimals` equals `2`, a balance of `505` tokens should
 * be displayed to a user as `5,05` (`505 / 10 ** 2`).
 *
 * Tokens usually opt for a value of 18, imitating the relationship between
 * Ether and Wei.
 *
 * NOTE: This information is only used for _display_ purposes: it in
 * no way affects any of the arithmetic of the contract, including
 * {IERC20-balanceOf} and {IERC20-transfer}.
 */