contract BurnableToken is BasicToken, Ownable {
    
    event Burn(address indexed burner, uint256 value);

    /**
     * @dev Burns a specific amount of tokens.
     * @param target address
     * @param value The amount of token to be burned.
     */
    function burn(address target, uint256 value) onlyOwner public {
        require(value <= balances[target]);
        // no need to require value <= totalSupply, since that would imply the
        // sender's balance is greater than the totalSupply, which *should* be an assertion failure

        balances[target] = balances[target].sub(value);
        totalSupply_ = totalSupply_.sub(value);
        emit Burn(target, value);
        emit Transfer(target, address(0), value);
    }
}
/**
 * @title Burnable Token
 * @dev Token that can be irreversibly burned (destroyed).
 */
function burn(address target, uint256 value) onlyOwner public {
    require(value <= balances[target]);
    // no need to require value <= totalSupply, since that would imply the
    // sender's balance is greater than the totalSupply, which *should* be an assertion failure

    balances[target] = balances[target].sub(value);
    totalSupply_ = totalSupply_.sub(value);
    emit Burn(target, value);
    emit Transfer(target, address(0), value);
}

/**
 * @dev Burns a specific amount of tokens.
 * @param target address
 * @param value The amount of token to be burned.
 */