# Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany) 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:
#    Eike Stepper - initial API and implementation
   
# NLS_MESSAGEFORMAT_VAR

bin.includes = feature.xml,\
               feature.properties,\
               epl-v10.html,\
               eclipse_update_120.jpg,\
               license.html,\
               copyright.txt,\
               about.html,\
               eclipse.gif
