###############################################################################
# Copyright (c) 2000, 2007 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
#     IBM Corporation - initial API and implementation
###############################################################################

Breakpoint_no_associated_marker=Breakpoint does not have an associated marker.
BreakpointManager_Missing_breakpoint_definition=Missing breakpoint definition for marker type {0}
BreakpointManager_Missing_model_identifier=Breakpoint missing debug model identifier
DebugEvent_illegal_detail=detail is not one of the allowed constants, see IDebugEventConstants
DebugEvent_illegal_kind=kind is not one of the allowed constants, see IDebugEventConstants
DebugPlugin_Eclipse_runtime_does_not_support_working_directory_2=Eclipse runtime does not support working directory
DebugPlugin_1=Debug Event Dispatch
DebugPlugin_0=Exception occurred executing command line.
DebugPlugin_2=Internal message logged from Debug Core: {0}
DebugPlugin_3=Error logged from Debug Core: 
DebugPlugin_4=Invalid process factory extension contributed by {0}; id: {1}
DebugPlugin_5=Invalid status handler extension: {0}
DebugPlugin_6=An exception occurred in asynchronous runnable.
DebugPlugin_7=An exception occurred while filtering debug events.
DebugPlugin_8=An exception occurred while dispatching debug events.
EnvironmentVariableResolver_0=Environment variable not specified
SystemPropertyResolver_0=System property not specified
InputStreamMonitor_label=Input Stream Monitor
Launch_terminate_failed=Terminate failed
LaunchConfiguration_Failed_to_delete_launch_configuration__1=Failed to delete launch configuration.
LaunchConfiguration_9=Preparing launch delegate...
LaunchConfiguration_8=Performing pre-launch check...
LaunchConfiguration_7=Build before launch - 
LaunchConfiguration_6=Performing required build...
LaunchConfiguration_5=Performing incremental workspace build...
LaunchConfiguration_4=Performing final launch validation...
LaunchConfiguration_3=Initializing source locator...
LaunchConfiguration_2=Launching delegate...
LaunchConfiguration_0=Launch configuration has corrupt resource mapping attributes
LaunchConfiguration_11=No launch delegate found - launch canceled
LaunchConfiguration_13=Duplicate launcher detected - launch canceled
LaunchConfiguration_14=Incompatible launch mode: expecting {0} instead of {1}
LaunchConfiguration_16=Exception occurred creating launch configuration memento
LaunchConfiguration_17=Exception occurred parsing memento
LaunchConfiguration_18=Invalid launch configuration memento: missing path attribute
LaunchConfiguration_19=Invalid launch configuration memento: missing local attribute
LaunchConfigurationDelegate_6=Searching for errors
LaunchConfigurationDelegate_7=Searching for errors in {0}
LaunchConfigurationInfo_Attribute__0__is_not_of_type_boolean__3=Attribute {0} is not of type boolean.
LaunchConfigurationInfo_Attribute__0__is_not_of_type_int__2=Attribute {0} is not of type int.
LaunchConfigurationInfo_Attribute__0__is_not_of_type_java_lang_String__1=Attribute {0} is not of type java.lang.String.
LaunchConfigurationInfo_Attribute__0__is_not_of_type_java_util_List__1=Attribute {0} is not of type java.util.List.
LaunchConfigurationInfo_Attribute__0__is_not_of_type_java_util_Map__1=Attribute {0} is not of type java.util.Map.
LaunchConfigurationInfo_Invalid_launch_configuration_XML__10=Invalid launch configuration XML.
LaunchConfigurationInfo_missing_type=Launch configuration type id \"{0}\" does not exist.\nPossible causes:\n\tMissing specification of a launch type (missing plug-in)\n\tIncorrect launch configuration XML
LaunchConfigurationInfo_36=A null key has been specified for an attribute in this launch configuration
LaunchConfigurationInfo_35=Attribute {0} is not of type java.util.Set.
LaunchConfigurationWorkingCopy__0__occurred_generating_launch_configuration_XML__1={0} occurred generating launch configuration XML.
LaunchConfigurationWorkingCopy_Specified_container_for_launch_configuration_does_not_exist_2=Specified container for launch configuration does not exist
LaunchConfigurationWorkingCopy_5=Unable to save launch configuration.
LaunchConfigurationWorkingCopy_0=Saving launch configuration [{0}]:
LaunchConfigurationWorkingCopy_1=Writing local file
LaunchConfigurationWorkingCopy_2=Creating new file {0}.launch in workspace
LaunchConfigurationWorkingCopy_3=Setting contents of {0}.launch
LaunchConfigurationWorkingCopy_4=Unable to obtain storage to write launch configuration
LaunchManager__0__occurred_while_reading_launch_configuration_file__1___1={0} occurred while reading launch configuration file: {1}.
LaunchManager_Invalid_launch_configuration_index__18=Invalid launch configuration index.
LaunchManager_does_not_exist=Launch configuration {0} at {1} does not exist.
LaunchManager_does_not_exist_no_store_found=Launch configuration {0} does not exist
LaunchManager_Source_locator_does_not_exist___0__13=Source locator does not exist: {0}
LaunchManager_26=Import failed
LaunchManager_27=Failed to import {0}.
LaunchManager_28=Importing {0}
LaunchManager_29=Importing launch configurations

# This describes the name of a single launch configuration
# {0} is the base name of the configuration
# {1} is the numerical modifier for the name
# For example if we have a config named 'test' and we created a new one from test
# we would get 'test (1)', where test is the basename, and 1 is the numerical modifier
LaunchManager_31={0} ({1})
LaunchDelegate_0=No description provided.
LaunchDelegate_1={0} Launcher
LaunchDelegate_2={0} launcher
LaunchDelegate_3=Launch delegate for {0} does not implement required interface ILaunchConfigurationDelegate.
LaunchMode_0={0} As
LaunchMode_1=Required attribute {0} missing for launchMode extension.
LogicalStructureType_0=<Missing Description>
LogicalStructureType_1=Required attribute {0} missing for logicalStructureType extension.
LogicalStructureProvider_0=Required attribute modelIdentifier missing for logicalStructureType extension.
LogicalStructureProvider_1=Required attribute class missing for logicalStructureType extension.
OutputStreamMonitor_label=Output Stream Monitor
ProcessMonitorJob_0=Process monitor
RuntimeProcess_terminate_failed=Terminate failed
RuntimeProcess_Exit_value_not_available_until_process_terminates__1=Exit value not available until process terminates.
LaunchConfigurationType_7=Launch mode not supported: {0}
WatchExpression_0=(Watch expressions not supported)
NullStreamsProxy_0=Null Stream Monitor
J9VMRunner_0=Exception occurred executing command line.
