###############################################################################
# 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_1=Unable to restore location for launch configuration from memento: {0}
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_15=Unable to generate memento for {0}, shared file does not exist.
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
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_Source_locator_does_not_exist___0__13=Source locator does not exist: {0}
LaunchManager_30=Unable to retrieve shared launch configuration file for {0}
LaunchManager_29=A shared launch configuration must be shared in same project that it is a default configuration for.

# 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.
