################################################################################################################################################
#
# ********** CONFIGURATION FILE FOR POPULATION PROFILER **********
#
# TO CHANGE DEFAULT CONFIGURATION VALUES, MODIFY ORG.ECLIPSE.STEM.UTILITY.GENERATORS\GenConstants.java
#
# CONFIGURATION VARIABLES SET IN THIS FILE OVERRIDE THE DEFAULTS
#
# The WORKSPACE VARIABLE IS REQUIRED, ALL OTHER VARIABLES ARE OPTIONAL (i.e. WORKSPACE=C:\stemII\)
WORKSPACE=C:\stemII\
#
# ISO3166-1 file (i.e. ISO3166_1=C:\stemII\org.eclipse.stem.utility\parameters\ISO3166-1\ISO3166_1_list.txt)
#IS03166_1=
#
# ISO3166-2 file (i.e. ISO3166_2=C:\stemII\org.eclipse.stem.utility\parameters\ISO3166-2\ISO3166_2_list.txt)
#ISO3166_2=
#
# ISO fix  file (i.e. ISO_FIX=C:\stemII\org.eclipse.stem.utility\parameters\ISOFIX\ISO_FIX.txt)
#ISO_FIX=
#
# File with target countries we want to process (i.e. TARGET_LIST=C:\stemII\org.eclipse.stem.utility\parameters\targets\groupedDataFiles.txt)
#TARGET_LIST =
#
# Population profile for this country (i.e. POP_PROFILES=C:\stemII\org.eclipse.stem.utility\parameters\profiles\)
#POP_PROFILES=
#
# Path to areas in polygon units - used only for computing approximate area of level 2 regions (i.e. POLYGON_AREAS=C:\stemII\org.eclipse.stem.utility\parameters\PolygonAreas\)
#POLYGON_AREAS=
#
# Path to area and population files (i.e. AREA_POP=C:\stemII\org.eclipse.stem.utility\parameters\AreaPopulationData\)
#AREA_POP=
#
# Path to folder with lexicographically sorted files (i.e. LEX_DIR=C:\stemII\org.eclipse.stem.utility\parameters\sort\)
#LEX_DIR=
#
# Output directory for new files (i.e. PROPERTIES_OUTPUT=C:\stemII\org.eclipse.stem.internal.data\resources\data\country\)
PROPERTIES_OUTPUT= C:\tempout\
#
# ********** END OF CONFIGURATION FILE FOR POPULATION PROFILER **********
#
################################################################################################################################################