# GAB_2_human_2006_population.properties 
# This file contains population values for GABON
#
# /*********************************************************************************************
# * Copyright (c) 2006 IBM Corporation 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:
# *     IBM Corporation - initial API and implementation
# ***********************************************************************************************/

# /**********************************************************************************************
# * Key Format: 
# * 
# * 	 For level 1 data, the key is the ISO3166-2 code. An ISO3166-2 code is composed as follows: 
# * a two letter country code followed by up to three alphanumeric characters for the level 1 administration.
# *
# * 	 For level 2 data, the key is the ISO3166-2 code followed by six digits. The leftmost two digits indicate
# * the level 1 container of a level 2 administration (i.e. California is a level 1 container for Orange County
# * which is a level 2 administration).  The two digits were taken from a lexicographic sorting of all the
# * level 1 administrations within a country. Similarly, the four leftmost digits indicate a level 2 administration.
# * Again, these four digits are an index into the lexicographic sorting of all level 2 administrations within 
# * a level 1 administration. 
# ************************************************************************************************/

# This is the name of the class that will interpret the rest of the file's contents
RECORD_CLASSNAME = org.eclipse.stem.internal.data.records.CountryGraphRecord$CountryPopulationLabelGraphRecord

# The ISO-3166-1 alpha3 code for the country
ISOKEY = GAB

# The administration level of the population data
ADMIN_LEVEL = 2

# This is the date range for which the population values in this file are valid 
# See http://purl.org/dc/terms/1.1/valid
VALID = start=2006-01-01; end=2006-12-31;

# This is the source of the data
SOURCE = https://www.cia.gov/library/publications/the-world-factbook/
# SOURCE = http://www.stat-gabon.ga/Home/Index1.htm
# SOURCE = https://www.cia.gov/library/publications/the-world-factbook/

# The population identifier
POPULATION = human

# The year the data is valid
YEAR = 2006

# Level 1 (admin 1 = e.g., state)
# Level 2 (admin 2 = e.g., county)

# Generated key details :  Level 1 ( GA-9 = WOULEU NTEM ). Level 2 ( 090003 = NTEM (BITAM) ). 
GA-9-G090003 = 19454
# Generated key details :  Level 1 ( GA-9 = WOULEU NTEM ). Level 2 ( 090002 = HAUT-NTEM (MINVOUL) ). 
GA-9-G090002 = 19454
# Generated key details :  Level 1 ( GA-9 = WOULEU NTEM ). Level 2 ( 090005 = WOLEU (OYEM) ). 
GA-9-G090005 = 19454
# Generated key details :  Level 1 ( GA-6 = OGOOUE IVINDO ). Level 2 ( 060004 = ZADIE (MEKAMBO) ). 
GA-6-G060004 = 12215
# Generated key details :  Level 1 ( GA-6 = OGOOUE IVINDO ). Level 2 ( 060001 = IVINDO (MAKOKOU) ). 
GA-6-G060001 = 12215
# Generated key details :  Level 1 ( GA-9 = WOULEU NTEM ). Level 2 ( 090004 = OKANO (MITZIK) ). 
GA-9-G090004 = 19454
# Generated key details :  Level 1 ( GA-1 = ESTUAIRE ). Level 2 ( 010004 = NOYA (COCOBEACH) ). 
GA-1-G010004 = 115796
# Generated key details :  Level 1 ( GA-9 = WOULEU NTEM ). Level 2 ( 090001 = HAUT-COMO (MEDOUNEU) ). 
GA-9-G090001 = 19454
# Generated key details :  Level 1 ( GA-6 = OGOOUE IVINDO ). Level 2 ( 060003 = MVOUNG (OVENG) ). 
GA-6-G060003 = 12215
# Generated key details :  Level 1 ( GA-1 = ESTUAIRE ). Level 2 ( 010001 = KOMO (KANGO) ). 
GA-1-G010001 = 115796
# Generated key details :  Level 1 ( GA-1 = ESTUAIRE ). Level 2 ( 010002 = KOMO-MONDAH (NTOUM) ). 
GA-1-G010002 = 115796
# Generated key details :  Level 1 ( GA-6 = OGOOUE IVINDO ). Level 2 ( 060002 = LOPE (BOOUE) ). 
GA-6-G060002 = 12215
# Generated key details :  Level 1 ( GA-1 = ESTUAIRE ). Level 2 ( 010003 = LIBREVILLE ). 
GA-1-G010003 = 115796
# Generated key details :  Level 1 ( GA-7 = OGOOUE LOLO ). Level 2 ( 070003 = MOULOUDNOU (LATOURSVILLE) ). 
GA-7-G070003 = 10978
# Generated key details :  Level 1 ( GA-3 = MOYEN OGOOUE ). Level 2 ( 030001 = ABANGA-BIGNE (NDJOLE) ). 
GA-3-G030001 = 21158
# Generated key details :  Level 1 ( GA-2 = HAUT OGOOUE ). Level 2 ( 020010 = SEBE-BRIKOLO (OKONDJA) ). 
GA-2-G020010 = 10430
# Generated key details :  Level 1 ( GA-8 = OGOOUE MARITIME ). Level 2 ( 080001 = BENDJE (PORT GENTIL) ). 
GA-8-G080001 = 32637
# Generated key details :  Level 1 ( GA-3 = MOYEN OGOOUE ). Level 2 ( 030002 = OGOOUE ET LACS (LAMBAR.) ). 
GA-3-G030002 = 21158
# Generated key details :  Level 1 ( GA-2 = HAUT OGOOUE ). Level 2 ( 020001 = DJOUE (ONGA) ). 
GA-2-G020001 = 10430
# Generated key details :  Level 1 ( GA-7 = OGOOUE LOLO ). Level 2 ( 070001 = LOLO BOUENGUIDI (KOULA.) ). 
GA-7-G070001 = 10978
# Generated key details :  Level 1 ( GA-4 = NGOUNIE ). Level 2 ( 040009 = TSAMBA MANGOTSI (FOUG.) ). 
GA-4-G040009 = 8642
# Generated key details :  Level 1 ( GA-7 = OGOOUE LOLO ). Level 2 ( 070004 = OFFOUE-ONOYE (IBOUNDJI) ). 
GA-7-G070004 = 10978
# Generated key details :  Level 1 ( GA-4 = NGOUNIE ). Level 2 ( 040008 = OGOULOU (MIMONGO) ). 
GA-4-G040008 = 8642
# Generated key details :  Level 1 ( GA-2 = HAUT OGOOUE ). Level 2 ( 020005 = LEKONI-LEKORI (AKIENI) ). 
GA-2-G020005 = 10430
# Generated key details :  Level 1 ( GA-7 = OGOOUE LOLO ). Level 2 ( 070002 = LOMBO-BOUENGUIDI (PANA) ). 
GA-7-G070002 = 10978
# Generated key details :  Level 1 ( GA-2 = HAUT OGOOUE ). Level 2 ( 020009 = PLATEAUX (LEKONI) ). 
GA-2-G020009 = 10430
# Generated key details :  Level 1 ( GA-8 = OGOOUE MARITIME ). Level 2 ( 080002 = ETINBOUE (OMBOUE) ). 
GA-8-G080002 = 32637
# Generated key details :  Level 1 ( GA-2 = HAUT OGOOUE ). Level 2 ( 020003 = LEKABI-IEWOLO (NGOUONI) ). 
GA-2-G020003 = 10430
# Generated key details :  Level 1 ( GA-2 = HAUT OGOOUE ). Level 2 ( 020006 = LEMBOMBI-LEYOU (MOUANDA) ). 
GA-2-G020006 = 10430
# Generated key details :  Level 1 ( GA-2 = HAUT OGOOUE ). Level 2 ( 020007 = MPASSA (FRANCEVILLE) ). 
GA-2-G020007 = 10430
# Generated key details :  Level 1 ( GA-4 = NGOUNIE ). Level 2 ( 040007 = NDOLOU (MANDJI) ). 
GA-4-G040007 = 8642
# Generated key details :  Level 1 ( GA-2 = HAUT OGOOUE ). Level 2 ( 020002 = DJOUORI-AGNILI (BONGOVILL ). 
GA-2-G020002 = 10430
# Generated key details :  Level 1 ( GA-4 = NGOUNIE ). Level 2 ( 040003 = DOUYA ONOYE (MOUILA) ). 
GA-4-G040003 = 8642
# Generated key details :  Level 1 ( GA-4 = NGOUNIE ). Level 2 ( 040001 = BOUMI-LOWETSI (MBIGOU) ). 
GA-4-G040001 = 8642
# Generated key details :  Level 1 ( GA-2 = HAUT OGOOUE ). Level 2 ( 020004 = LEKOKO (BAKOUMBA) ). 
GA-2-G020004 = 10430
# Generated key details :  Level 1 ( GA-4 = NGOUNIE ). Level 2 ( 040004 = LOUETSI-BIBAKA (MALINGA) ). 
GA-4-G040004 = 8642
# Generated key details :  Level 1 ( GA-4 = NGOUNIE ). Level 2 ( 040006 = MOUGALABA (GUIETSOU) ). 
GA-4-G040006 = 8642
# Generated key details :  Level 1 ( GA-8 = OGOOUE MARITIME ). Level 2 ( 080003 = NDOUGOU (GAMBA) ). 
GA-8-G080003 = 32637
# Generated key details :  Level 1 ( GA-2 = HAUT OGOOUE ). Level 2 ( 020008 = OGOUOE-LETILI (BOUMANGO) ). 
GA-2-G020008 = 10430
# Generated key details :  Level 1 ( GA-4 = NGOUNIE ). Level 2 ( 040002 = DOLA (NDENDE) ). 
GA-4-G040002 = 8642
# Generated key details :  Level 1 ( GA-4 = NGOUNIE ). Level 2 ( 040005 = LOUETSI-WANO (LEBAMBA) ). 
GA-4-G040005 = 8642
# Generated key details :  Level 1 ( GA-5 = NYANGA ). Level 2 ( 050002 = DOUIGNY (MOABI) ). 
GA-5-G050002 = 7886
# Generated key details :  Level 1 ( GA-5 = NYANGA ). Level 2 ( 050005 = MOUGOUTSI (TCHIBANGA) ). 
GA-5-G050005 = 7886
# Generated key details :  Level 1 ( GA-5 = NYANGA ). Level 2 ( 050003 = DOUTSILA (MABANDA) ). 
GA-5-G050003 = 7886
# Generated key details :  Level 1 ( GA-5 = NYANGA ). Level 2 ( 050001 = BASSE BANIO (MAYUMBA) ). 
GA-5-G050001 = 7886
# Generated key details :  Level 1 ( GA-5 = NYANGA ). Level 2 ( 050004 = HAUTE-BANIO (NDINDI) ). 
GA-5-G050004 = 7886
