/******************************************************************************
 * Copyright (c) 2006 IBM Corporation.
 * 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 Implementation
 *
 *****************************************************************************/
package org.eclipse.ptp.debug.sdm.core.messages;

import org.eclipse.osgi.util.NLS;

public class Messages extends NLS {
	private static final String BUNDLE_NAME = "org.eclipse.ptp.debug.sdm.core.messages.messages"; //$NON-NLS-1$

	public static String PDIDebugger_0;
	public static String PDIDebugger_1;
	public static String PDIDebugger_2;
	public static String PDIDebugger_3;
	public static String PDIDebugger_4;
	public static String PDIDebugger_5;
	public static String PDIDebugger_6;
	public static String PDIDebugger_7;
	public static String PDIDebugger_8;
	public static String PDIDebugger_9;
	public static String PDIDebugger_10;
	public static String PDIDebugger_11;
	public static String PDIDebugger_12;
	public static String PDIDebugger_13;
	public static String PDIDebugger_14;
	public static String PDIDebugger_15;
	public static String PDIDebugger_16;
	public static String PDIDebugger_17;
	public static String PDIDebugger_18;
	public static String PDIDebugger_19;
	public static String PDIDebugger_20;
	public static String PDIDebugger_21;
	public static String PDIDebugger_22;
	public static String PDIDebugger_24;
	public static String PDIDebugger_25;
	public static String PDIDebugger_26;
	public static String PDIDebugger_27;
	public static String PDIDebugger_28;
	public static String PDIDebugger_29;
	public static String PDIDebugger_30;
	public static String PDIDebugger_31;
	public static String PDIDebugger_32;
	public static String PDIDebugger_33;
	public static String PDIDebugger_34;
	public static String PDIDebugger_35;
	public static String PDIDebugger_36;
	public static String PDIDebugger_37;
	public static String PDIDebugger_38;
	public static String PDIDebugger_39;
	public static String PDIDebugger_40;
	public static String PDIDebugger_41;
	public static String PDIDebugger_42;
	public static String PDIDebugger_43;
	public static String PDIDebugger_44;
	public static String PDIDebugger_45;

	public static String PDIDebugger_Operation_canceled_by_user;
	public static String ProxyDebugClient_0;
	public static String ProxyDebugClient_1;
	public static String SDMDebugger_0;
	public static String SDMDebugger_1;

	public static String SDMDebugger_10;
	public static String SDMDebugger_2;
	public static String SDMDebugger_3;
	public static String SDMDebugger_4;
	public static String SDMDebugger_5;
	public static String SDMDebugger_7;
	public static String SDMDebugger_8;
	public static String SDMDebugger_9;
	public static String SDMDebugger_11;
	public static String SDMDebugger_12;
	public static String SDMDebugger_13;
	public static String SDMDebugger_14;
	public static String SDMDebugger_15;

	public static String SDMDebugger_6;

	public static String SDMDebugger_Operation_canceled_by_user;
	public static String SDMEvaluateExpressionRequest_0;
	public static String SDMEvaluatePartialExpressionRequest_0;
	public static String SDMEventManager_0;
	public static String SDMEventManager_1;
	public static String SDMEventManager_2;
	public static String SDMEventManager_3;
	public static String SDMEventManager_4;
	public static String SDMEventManager_5;
	public static String SDMListSignalsRequest_0;
	public static String SDMListStackFramesRequest_0;
	public static String SDMRunner_0;
	public static String SDMRunner_2;
	public static String SDMRunner_3;
	public static String SDMRunner_4;
	public static String SDMRunner_5;
	public static String SDMRunner_6;
	public static String SDMRunner_7;
	public static String SDMRunner_8;
	public static String SDMRunner_9;
	public static String SDMRunner_10;
	public static String SDMRunner_11;
	public static String SDMRunner_12;
	public static String SDMRunner_13;
	public static String SDMRunner_14;
	public static String SDMRunner_15;
	public static String SDMRunner_16;
	public static String SDMRunner_17;
	public static String SDMRunner_18;
	public static String SDMRunner_19;
	public static String SDMRunner_20;
	public static String SDMRunner_21;
	public static String SDMRunner_22;
	public static String SDMSetThreadSelectRequest_0;

	static {
		// initialize resource bundle
		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
	}

	private Messages() {
	}
}
