contract Token is ERC20Pausable, ERC20Mintable, ERC20Burnable, Ownable, CanReclaimTokens {
    string private name_;
    string private symbol_;
    uint8 private decimals_;

    event LogRenamed(string _name, string _symbol);

    constructor (string memory _name, string memory _symbol, uint8 _decimals) public {
        name_ = _name;
        symbol_ = _symbol;
        decimals_ = _decimals;
    }

    /// @return The name of the token.
    function name() public view returns (string memory) {
        return name_;
    }

    /// @return The symbol of the token.
    function symbol() public view returns (string memory) {
        return symbol_;
    }

    /// @return The number of decimals of the token.
    function decimals() public view returns (uint8) {
        return decimals_;
    }

    /// @param _name The new name of the token.
    /// @param _symbol Thew new symbol of the token.
    function rename(string calldata _name, string calldata _symbol) external onlyOwner {
        name_ = _name;
        symbol_ = _symbol;
        emit LogRenamed(_name, _symbol);
    }
}
function symbol() public view returns (string memory) {
    return symbol_;
}

/// @return The symbol of the token.