package org.eclipse.wst.xsl.jaxp.launching.internal;

import org.eclipse.osgi.util.NLS;

public class Messages extends NLS {
	private static final String BUNDLE_NAME = "org.eclipse.wst.xsl.jaxp.launching.internal.messages"; //$NON-NLS-1$

	public static String XSLTRuntime_10;
	public static String XSLTRuntime_5;
	public static String XSLTRuntime_6;
	public static String XSLTRuntime_7;
	public static String XSLTRuntime_8;
	public static String XSLTRuntime_9;
	
	public static String Attribute_0;
	public static String Attribute_1;
	public static String Attribute_2;
	public static String Attribute_5;
	public static String PluginProcessorJar_0; 
	public static String ProcessorType_2; 
	public static String ProcessorType_3; 
	public static String ProcessorType_4; 
	public static String ProcessorType_5; 
	public static String Utils_0; 
	public static String Utils_1; 
	public static String XSLTLaunchConfigurationDelegate_0;
	public static String XSLTLaunchConfigurationDelegate_1; 
	public static String XSLTLaunchConfigurationDelegate_2;
	public static String XSLTLaunchConfigurationDelegate_23; 
	public static String XSLTLaunchConfigurationDelegate_3; 
	public static String XSLTLaunchConfigurationDelegate_31; 
	public static String XSLTLaunchConfigurationDelegate_4;
	public static String XSLTLaunchConfigurationDelegate_5;
	public static String XSLTLaunchConfigurationDelegate_6;
	public static String XSLTLaunchConfigurationDelegate_7; 
	
	public static String AbstractRegistryReader_3; 
	public static String AbstractRegistryReader_5;
	public static String AbstractRegistryReader_6;
	public static String AbstractRegistryReader_7;
	public static String AbstractRegistryReader_8;
	public static String AbstractRegistryReader_9;

	public static String JAXPJavaLaunchConfigurationDelegate_0;

	public static String JAXPJavaLaunchConfigurationDelegate_1;

	public static String JAXPJavaLaunchConfigurationDelegate_2;

	public static String JAXPJavaLaunchConfigurationDelegate_3;

	public static String JAXPJavaLaunchConfigurationDelegate_4;

	public static String JAXPJavaLaunchConfigurationDelegate_5;
    public static String LaunchHelper_0;
    public static String LaunchHelper_1;
	
    public static String XSLDebugTarget_0;
    public static String XSLDebugTarget_1;
    public static String XSLDebugTarget_19; 
    public static String XSLDebugTarget_2; 
    public static String XSLDebugTarget_20;
    public static String XSLDebugTarget_3; 
    public static String XSLDebugTarget_4;
    
	private Messages() {
	}

	static {
		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
	}

}
