/*******************************************************************************
 * Copyright (c) 2000, 2018 IBM Corporation and others.
 *
 * This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *     IBM - Initial API and implementation
 *     Google Inc - add support for accepting multiple connections
 *******************************************************************************/
package org.eclipse.jdi.internal.connect;

import org.eclipse.osgi.util.NLS;

public class ConnectMessages extends NLS {
	private static final String BUNDLE_NAME = "org.eclipse.jdi.internal.connect.ConnectMessages";//$NON-NLS-1$

	public static String PacketReceiveManager_Got_IOException_from_Virtual_Machine_1;
	public static String PacketReceiveManager_Got_IOException_from_Virtual_Machine_2;
	public static String PacketSendManager_Got_IOException_from_Virtual_Machine_1;
	public static String SocketAttachingConnectorImpl_Machine_name_to_which_to_attach_for_VM_connections_1;
	public static String SocketAttachingConnectorImpl_Host_2;
	public static String SocketAttachingConnectorImpl_Port_number_to_which_to_attach_for_VM_connections_3;
	public static String SocketAttachingConnectorImpl_Port_4;
	public static String SocketAttachingConnectorImpl_1;
	public static String SocketAttachingConnectorImpl_2;
	public static String SocketAttachingConnectorImpl_Attaches_by_socket_to_other_VMs_5;
	public static String SocketAttachingConnectorImpl_Connection_argument_is_not_of_the_right_type_6;
	public static String SocketAttachingConnectorImpl_Necessary_connection_argument_is_null_7;
	public static String SocketAttachingConnectorImpl_Connection_argument_is_not_a_number_8;
	public static String SocketLaunchingConnectorImpl_Home_directory_of_the_SDK_or_runtime_environment_used_to_launch_the_application_1;
	public static String SocketLaunchingConnectorImpl_Home_2;
	public static String SocketLaunchingConnectorImpl_Launched_VM_options_3;
	public static String SocketLaunchingConnectorImpl_Options_4;
	public static String SocketLaunchingConnectorImpl_Main_class_and_arguments__or_if__jar_is_an_option__the_main_jar_file_and_arguments_5;
	public static String SocketLaunchingConnectorImpl_Main_6;
	public static String SocketLaunchingConnectorImpl_All_threads_will_be_suspended_before_execution_of_main_7;
	public static String SocketLaunchingConnectorImpl_Suspend_8;
	public static String SocketLaunchingConnectorImpl_Character_used_to_combine_space_delimited_text_into_a_single_command_line_argument_9;
	public static String SocketLaunchingConnectorImpl_Quote_10;
	public static String SocketLaunchingConnectorImpl_Name_of_the_Java_VM_launcher_11;
	public static String SocketLaunchingConnectorImpl_Launcher_12;
	public static String SocketLaunchingConnectorImpl_Launches_target_using_Sun_Java_VM_command_line_and_attaches_to_it_13;
	public static String SocketLaunchingConnectorImpl_Connection_argument_is_not_of_the_right_type_14;
	public static String SocketLaunchingConnectorImpl_Necessary_connection_argument_is_null_15;
	public static String SocketLaunchingConnectorImpl_Connection_argument_is_not_a_number_16;
	public static String SocketListeningConnectorImpl_Port_number_at_which_to_listen_for_VM_connections_1;
	public static String SocketListeningConnectorImpl_Port_2;
	public static String SocketListeningConnectorImpl_Timeout_before_accept_returns_3;
	public static String SocketListeningConnectorImpl_Timeout_4;
	public static String SocketListeningConnectorImpl_Accepts_socket_connections_initiated_by_other_VMs_5;
	public static String SocketListeningConnectorImpl_Connection_argument_is_not_of_the_right_type_6;
	public static String SocketListeningConnectorImpl_Necessary_connection_argument_is_null_7;
	public static String SocketListeningConnectorImpl_Connection_argument_is_not_a_number_8;
	public static String SocketListeningConnectorImpl_Limit;

	public static String SocketListeningConnectorImpl_Limit_incoming_connections;

	public static String SocketListeningConnectorImpl_ListeningConnector_Socket_Port;
	public static String SocketRawLaunchingConnectorImpl_Raw_command_to_start_the_debugged_application_VM_1;
	public static String SocketRawLaunchingConnectorImpl_Command_2;
	public static String SocketRawLaunchingConnectorImpl_Address_from_which_to_listen_for_a_connection_after_the_raw_command_is_run_3;
	public static String SocketRawLaunchingConnectorImpl_Address_4;
	public static String SocketRawLaunchingConnectorImpl_Character_used_to_combine_space_delimited_text_into_a_single_command_line_argument_5;
	public static String SocketRawLaunchingConnectorImpl_Quote_6;
	public static String SocketRawLaunchingConnectorImpl_Launches_target_using_user_specified_command_line_and_attaches_to_it_7;
	public static String SocketRawLaunchingConnectorImpl_Connection_argument_is_not_of_the_right_type_8;
	public static String SocketRawLaunchingConnectorImpl_Necessary_connection_argument_is_null_9;
	public static String SocketRawLaunchingConnectorImpl_Connection_argument_is_not_a_number_10;
	public static String SocketLaunchingConnectorImpl_VM_did_not_connect_within_given_time___0__ms_1;
	public static String PacketSendManager_Got__0__from_Virtual_Machine_1;
	public static String PacketSendManager_Got__0__from_Virtual_Machine___1__1;
	public static String PacketReceiveManager_Got__0__from_Virtual_Machine_1;
	public static String PacketReceiveManager_Got__0__from_Virtual_Machine___1__1;
	public static String PacketReceiveManager_0;
	public static String SocketTransportService_0;
	public static String SocketTransportService_1;
	public static String SocketConnectionLabelSeparator;

	static {
		// load message values from bundle file
		NLS.initializeMessages(BUNDLE_NAME, ConnectMessages.class);
	}
}
