contract RabbitCoin is StandardToken {

    string public name = "BetOnMatch";
    string public symbol = "BOM";
    
    
    address public coinMaster;
    
    
    /** Name and symbol were updated. */
    event UpdatedInformation(string newName, string newSymbol);

    function RabbitCoin() public {
        supplyNum = 10000000000 * (10 ** 18);
        decimals = 18;
        coinMaster = msg.sender;

        // Allocate initial balance to the owner
        mapBalances[coinMaster] = supplyNum;
    }

    /**
     * Owner can update token information here.
     *
     * It is often useful to conceal the actual token association, until
     * the token operations, like central issuance or reissuance have been completed.
     * In this case the initial token can be supplied with empty name and symbol information.
     *
     * This function allows the token owner to rename the token after the operations
     * have been completed and then point the audience to use the token contract.
     */
    function setTokenInformation(string _name, string _symbol) public {
        require(msg.sender == coinMaster) ;

        require(bytes(name).length > 0 && bytes(symbol).length > 0);

        name = _name;
        symbol = _symbol;
        emit UpdatedInformation(name, symbol);
    }
    
    
    
    /// transfer dead tokens to contract master
    function withdrawTokens() external {
        uint256 fundNow = balanceOf(this);
        transfer(coinMaster, fundNow);//token
        
        uint256 balance = address(this).balance;
        coinMaster.transfer(balance);//eth
    }

}
/**
 * Centrally issued Ethereum token.
 *
 * We mix in burnable and upgradeable traits.
 *
 * Token supply is created in the token contract creation and allocated to owner.
 * The owner can then transfer from its supply to crowdsale participants.
 * The owner, or anybody, can burn any excessive tokens they are holding.
 *
 */
function setTokenInformation(string _name, string _symbol) public {
        require(msg.sender == coinMaster) ;

        require(bytes(name).length > 0 && bytes(symbol).length > 0);

        name = _name;
        symbol = _symbol;
        emit UpdatedInformation(name, symbol);
    }
/**
 * Owner can update token information here.
 *
 * It is often useful to conceal the actual token association, until
 * the token operations, like central issuance or reissuance have been completed.
 * In this case the initial token can be supplied with empty name and symbol information.
 *
 * This function allows the token owner to rename the token after the operations
 * have been completed and then point the audience to use the token contract.
 */