# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
#  All rights reserved. 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 
#  http{//www.eclipse.org/legal/epl-2.0.html 
# 
#  Based on ideas from Xtext, Xtend, Xcore
#   
#  Contributors:  
#  		Joerg Riegel - Initial implementation 
#  

source.. = src/,\
           src-gen/,\
           xtend-gen/,\
           emf-gen/
bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  model/,\
               META-INF/,\
               .,\
               plugin.xml,\
               plugin.properties,\
               .classpath,\
               .project,\
               .settings/,\
               license.html,\
               LICENSE.txt,\
               epl-2.0.html
src.includes = about.properties,  about.mappings,  about.ini,  about.html,  license.html,\
               LICENSE.txt,\
               epl-2.0.html			   

