contract WurstcoinNG is ERC20Base {
    
    using SafeMath for uint256;
    
    uint256 constant SUPPLY = 10000000;
    address immutable owner = msg.sender;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    
    constructor () payable {
        require(SUPPLY > 0, "SUPPLY has to be greater than 0");
        
        _name = "Wurstcoin";
        _symbol = "WURST";
        _decimals = uint8(18);
        _totalSupply = SUPPLY.mul(10 ** uint256(decimals()));
        _balances[msg.sender] = _totalSupply;
        emit Transfer(0x0000000000000000000000000000000000000000, msg.sender, _totalSupply);
    }

    /**
     * @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 name() public view returns (string memory) {
        return _name;
    }
/**
 * @dev Returns the name of the token.
 */