--- source/data/coll/collocal.mk	1969-12-31 16:00:00.000000000 -0800
+++ source/data/coll/collocal.mk	2012-02-01 10:21:59.099902000 -0800
@@ -0,0 +1,90 @@
+# *   Copyright (C) 1998-2010, International Business Machines
+# *   Corporation and others.  All Rights Reserved.
+COLLATION_CLDR_VERSION = 1.9
+# A list of txt's to build
+# Note: 
+#
+#   If you are thinking of modifying this file, READ THIS. 
+#
+# Instead of changing this file [unless you want to check it back in],
+# you should consider creating a 'collocal.mk' file in this same directory.
+# Then, you can have your local changes remain even if you upgrade or
+# reconfigure ICU.
+#
+# Example 'collocal.mk' files:
+#
+#  * To add an additional locale to the list: 
+#    _____________________________________________________
+#    |  COLLATION_SOURCE_LOCAL =   myLocale.txt ...
+#
+#  * To REPLACE the default list and only build with a few
+#     locale:
+#    _____________________________________________________
+#    |  COLLATION_SOURCE = ar.txt ar_AE.txt en.txt de.txt zh.txt
+#
+#
+# Generated by LDML2ICUConverter, from LDML source files. 
+
+# Aliases which do not have a corresponding xx.xml file (see icu-config.xml & build.xml)
+COLLATION_SYNTHETIC_ALIAS = de_.txt de__PHONEBOOK.txt es_.txt es__TRADITIONAL.txt\
+ hi_.txt hi__DIRECT.txt in.txt in_ID.txt iw.txt\
+ iw_IL.txt no.txt no_NO.txt\
+ sr_BA.txt sr_ME.txt sr_RS.txt zh_.txt\
+ zh_CN.txt zh_HK.txt zh_MO.txt zh_SG.txt zh_TW.txt\
+ zh_TW_STROKE.txt zh__PINYIN.txt
+
+
+# All aliases (to not be included under 'installed'), but not including root.
+COLLATION_ALIAS_SOURCE = $(COLLATION_SYNTHETIC_ALIAS)
+
+
+# Empty locales, used for validSubLocale fallback.
+COLLATION_EMPTY_SOURCE = ar_AE.txt ar_BH.txt ar_DZ.txt ar_EG.txt\
+ ar_IQ.txt ar_JO.txt ar_KW.txt ar_LB.txt ar_LY.txt\
+ ar_MA.txt ar_OM.txt ar_QA.txt ar_SA.txt ar_SD.txt\
+ ar_SY.txt ar_TN.txt ar_YE.txt \
+ bg_BG.txt ca_ES.txt cs_CZ.txt da_DK.txt de_AT.txt\
+ de_BE.txt de_CH.txt de_DE.txt de_LU.txt el_GR.txt\
+ en_AU.txt en_BW.txt en_CA.txt en_GB.txt en_HK.txt\
+ en_IE.txt en_IN.txt en_MT.txt en_NZ.txt en_PH.txt\
+ en_SG.txt en_US.txt en_US_POSIX.txt en_VI.txt en_ZA.txt\
+ en_ZW.txt es_AR.txt es_BO.txt es_CL.txt es_CO.txt\
+ es_CR.txt es_DO.txt es_EC.txt es_ES.txt es_GT.txt\
+ es_HN.txt es_MX.txt es_NI.txt es_PA.txt es_PE.txt\
+ es_PR.txt es_PY.txt es_SV.txt es_US.txt es_UY.txt\
+ es_VE.txt fi_FI.txt\
+ fr_BE.txt fr_CH.txt fr_FR.txt fr_LU.txt\
+ ga.txt ga_IE.txt he_IL.txt hi_IN.txt\
+ hr_HR.txt hu_HU.txt id.txt id_ID.txt\
+ it_CH.txt it_IT.txt ja_JP.txt\
+ ko_KR.txt lt_LT.txt lv_LV.txt\
+ nb_NO.txt nl.txt nl_BE.txt nl_NL.txt nn_NO.txt\
+ pl_PL.txt\
+ pt.txt pt_BR.txt pt_PT.txt ro_RO.txt ru_RU.txt\
+ ru_UA.txt sk_SK.txt sl_SI.txt sr_Cyrl.txt\
+ sr_Cyrl_BA.txt sr_Cyrl_ME.txt sr_Cyrl_RS.txt sr_Latn_BA.txt sr_Latn_ME.txt\
+ sr_Latn_RS.txt sv_FI.txt sv_SE.txt\
+ th_TH.txt tr_TR.txt uk_UA.txt vi_VN.txt zh_Hans.txt\
+ zh_Hans_CN.txt zh_Hans_SG.txt zh_Hant_HK.txt zh_Hant_MO.txt zh_Hant_TW.txt
+
+
+
+# Ordinary resources
+# am and sw are not listed here because we don't have the tailoring
+# for them.
+COLLATION_SOURCE = $(COLLATION_EMPTY_SOURCE) ar.txt bg.txt\
+ ca.txt cs.txt da.txt\
+ de.txt el.txt en.txt\
+ es.txt et.txt fi.txt fil.txt\
+ fr.txt fr_CA.txt he.txt\
+ hi.txt hr.txt hu.txt it.txt\
+ ja.txt\
+ ko.txt lt.txt lv.txt\
+ nb.txt nn.txt\
+ pl.txt\
+ ro.txt ru.txt sk.txt sl.txt\
+ sr.txt sr_Latn.txt sv.txt\
+ th.txt tr.txt uk.txt vi.txt zh.txt\
+ zh_Hant.txt\
+ bn.txt gu.txt kn.txt ml.txt mr.txt ms.txt ta.txt te.txt\
+ fa.txt
--- source/data/curr/reslocal.mk	1969-12-31 16:00:00.000000000 -0800
+++ source/data/curr/reslocal.mk	2012-02-01 10:23:19.129339000 -0800
@@ -0,0 +1,79 @@
+# *   Copyright (C) 1998-2010, International Business Machines
+# *   Corporation and others.  All Rights Reserved.
+CURR_CLDR_VERSION = 1.9
+# A list of txt's to build
+# The downstream packager may not need this file at all if their package is not
+# constrained by
+# the size (and/or their target OS already has ICU with the full locale data.)
+#
+# Listed below are locale data files necessary for 40 + 1 + 8 languages Chrome
+# is localized to.
+#
+# In addition to them, 40+ "abridged" locale data files are listed. Chrome is
+# localized to them, but
+# uses a few categories of data in those locales for IDN handling and language
+# name listing (in the UI).
+# Aliases which do not have a corresponding xx.xml file (see icu-config.xml &
+# build.xml)
+CURR_SYNTHETIC_ALIAS =
+
+# All aliases (to not be included under 'installed'), but not including root.
+CURR_ALIAS_SOURCE = $(CURR_SYNTHETIC_ALIAS)\
+ zh_CN.txt zh_TW.txt zh_HK.txt zh_SG.txt\
+ no.txt in.txt iw.txt
+
+# Ordinary resources
+CURR_SOURCE =\
+ am.txt\
+ ar.txt\
+ bg.txt\
+ bn.txt\
+ ca.txt\
+ cs.txt\
+ da.txt\
+ de.txt\
+ el.txt\
+ en.txt\
+ es.txt\
+ es_AR.txt es_CO.txt es_EC.txt es_HN.txt es_UY.txt\
+ es_MX.txt es_CL.txt\
+ es_GT.txt es_PR.txt es_US.txt\
+ et.txt\
+ fa.txt\
+ fi.txt\
+ fil.txt\
+ fr.txt\
+ gu.txt\
+ he.txt\
+ hi.txt\
+ hr.txt\
+ hu.txt\
+ id.txt\
+ it.txt\
+ ja.txt\
+ kn.txt\
+ ko.txt\
+ lt.txt\
+ lv.txt\
+ ml.txt\
+ mr.txt\
+ ms.txt\
+ nb.txt\
+ nl.txt\
+ pl.txt\
+ pt.txt pt_PT.txt\
+ ro.txt\
+ ru.txt\
+ sk.txt\
+ sl.txt\
+ sr.txt\
+ sv.txt\
+ sw.txt\
+ ta.txt\
+ te.txt\
+ th.txt\
+ tr.txt\
+ uk.txt\
+ vi.txt\
+ zh.txt zh_Hans.txt zh_Hans_CN.txt zh_Hans_SG.txt\
+ zh_Hant.txt zh_Hant_TW.txt zh_Hant_HK.txt
--- source/data/lang/reslocal.mk	1969-12-31 16:00:00.000000000 -0800
+++ source/data/lang/reslocal.mk	2011-07-25 02:16:27.318258000 -0700
@@ -0,0 +1,124 @@
+# *   Copyright (C) 1998-2010, International Business Machines
+# *   Corporation and others.  All Rights Reserved.
+LANG_CLDR_VERSION = 1.9
+# A list of txt's to build
+# The downstream packager may not need this file at all if their package is not
+# constrained by
+# the size (and/or their target OS already has ICU with the full locale data.)
+#
+# Listed below are locale data files necessary for 40 + 1 + 8 languages Chrome
+# is localized to.
+#
+# In addition to them, 40+ "abridged" locale data files are listed. Chrome is
+# localized to them, but
+# uses a few categories of data in those locales for IDN handling and language
+# name listing (in the UI).
+# Aliases which do not have a corresponding xx.xml file (see icu-config.xml &
+# build.xml)
+LANG_SYNTHETIC_ALIAS =
+
+# All aliases (to not be included under 'installed'), but not including root.
+LANG_ALIAS_SOURCE = $(LANG_SYNTHETIC_ALIAS)\
+ zh_CN.txt zh_TW.txt zh_HK.txt zh_SG.txt\
+ no.txt in.txt iw.txt
+
+# Ordinary resources
+LANG_SOURCE =\
+ am.txt\
+ ar.txt\
+ bg.txt\
+ bn.txt\
+ ca.txt\
+ cs.txt\
+ da.txt\
+ de.txt\
+ el.txt\
+ en.txt\
+ es.txt\
+ es_AR.txt\
+ es_CL.txt\
+ et.txt\
+ fa.txt\
+ fi.txt\
+ fil.txt\
+ fr.txt\
+ gu.txt\
+ he.txt\
+ hi.txt\
+ hr.txt\
+ hu.txt\
+ id.txt\
+ it.txt\
+ ja.txt\
+ kn.txt\
+ ko.txt\
+ lt.txt\
+ lv.txt\
+ ml.txt\
+ mr.txt\
+ nb.txt\
+ nl.txt\
+ pl.txt\
+ pt.txt pt_PT.txt\
+ ro.txt\
+ ru.txt\
+ sk.txt\
+ sl.txt\
+ sr.txt\
+ sv.txt\
+ sw.txt\
+ ta.txt\
+ te.txt\
+ th.txt\
+ tr.txt\
+ uk.txt\
+ vi.txt\
+ zh.txt zh_Hans.txt zh_Hans_CN.txt zh_Hans_SG.txt\
+ zh_Hant.txt zh_Hant_TW.txt zh_Hant_HK.txt\
+ af.txt\
+ ak.txt\
+ az.txt\
+ bem.txt\
+ be.txt\
+ bs.txt\
+ cy.txt\
+ eo.txt\
+ eu.txt\
+ fo.txt\
+ ga.txt\
+ gl.txt\
+ ha.txt\
+ haw.txt\
+ hy.txt\
+ ig.txt\
+ is.txt\
+ ka.txt\
+ kk.txt\
+ km.txt\
+ lg.txt\
+ mfe.txt\
+ mg.txt\
+ mk.txt\
+ mo.txt\
+ ms.txt\
+ mt.txt\
+ ne.txt\
+ nn.txt\
+ nyn.txt\
+ om.txt\
+ or.txt\
+ pa.txt\
+ ps.txt\
+ rm.txt\
+ rw.txt\
+ si.txt\
+ sn.txt\
+ so.txt\
+ sq.txt\
+ ti.txt\
+ tl.txt\
+ to.txt\
+ ur.txt\
+ uz.txt\
+ yo.txt\
+ zu.txt
--- source/data/locales/reslocal.mk	1969-12-31 16:00:00.000000000 -0800
+++ source/data/locales/reslocal.mk	2011-07-25 02:16:27.385258000 -0700
@@ -0,0 +1,125 @@
+# *   Copyright (C) 1998-2010, International Business Machines
+# *   Corporation and others.  All Rights Reserved.
+GENRB_CLDR_VERSION = 1.9
+# A list of txt's to build
+# The downstream packager may not need this file at all if their package is not
+# constrained by
+# the size (and/or their target OS already has ICU with the full locale data.)
+#
+# Listed below are locale data files necessary for 40 + 1 + 8 languages Chrome
+# is localized to.
+#
+# In addition to them, 40+ "abridged" locale data files are listed. Chrome is
+# localized to them, but
+# uses a few categories of data in those locales for IDN handling and language
+# name listing (in the UI).
+# Aliases which do not have a corresponding xx.xml file (see icu-config.xml &
+# build.xml)
+GENRB_SYNTHETIC_ALIAS =
+
+# All aliases (to not be included under 'installed'), but not including root.
+GENRB_ALIAS_SOURCE = $(GENRB_SYNTHETIC_ALIAS)\
+ zh_CN.txt zh_TW.txt zh_HK.txt zh_SG.txt\
+ no.txt in.txt iw.txt
+
+# Ordinary resources
+GENRB_SOURCE =\
+ am.txt\
+ ar.txt\
+ bg.txt\
+ bn.txt\
+ ca.txt\
+ cs.txt\
+ da.txt\
+ de.txt\
+ el.txt\
+ en.txt en_GB.txt en_US.txt\
+ es.txt es_ES.txt es_419.txt\
+ es_AR.txt es_CO.txt es_EC.txt es_HN.txt es_PA.txt es_PY.txt es_UY.txt\
+ es_BO.txt es_CR.txt es_MX.txt es_PE.txt es_SV.txt es_VE.txt es_CL.txt\
+ es_DO.txt es_GT.txt es_NI.txt es_PR.txt es_US.txt\
+ et.txt\
+ fa.txt\
+ fi.txt\
+ fil.txt\
+ fr.txt\
+ gu.txt\
+ he.txt\
+ hi.txt\
+ hr.txt\
+ hu.txt\
+ id.txt\
+ it.txt\
+ ja.txt\
+ kn.txt\
+ ko.txt\
+ lt.txt\
+ lv.txt\
+ ml.txt\
+ mr.txt\
+ nb.txt\
+ nl.txt\
+ pl.txt\
+ pt.txt pt_BR.txt pt_PT.txt\
+ ro.txt\
+ ru.txt\
+ sk.txt\
+ sl.txt\
+ sr.txt\
+ sv.txt\
+ sw.txt\
+ ta.txt\
+ te.txt\
+ th.txt\
+ tr.txt\
+ uk.txt\
+ vi.txt\
+ zh.txt zh_Hans.txt zh_Hans_CN.txt zh_Hans_SG.txt\
+ zh_Hant.txt zh_Hant_TW.txt zh_Hant_HK.txt\
+ af.txt\
+ ak.txt\
+ az.txt\
+ bem.txt\
+ be.txt\
+ bs.txt\
+ cy.txt\
+ eo.txt\
+ eu.txt\
+ fo.txt\
+ ga.txt\
+ gl.txt\
+ ha.txt\
+ haw.txt\
+ hy.txt\
+ ig.txt\
+ is.txt\
+ ka.txt\
+ kk.txt\
+ km.txt\
+ lg.txt\
+ mfe.txt\
+ mg.txt\
+ mk.txt\
+ mo.txt\
+ ms.txt\
+ mt.txt\
+ ne.txt\
+ nn.txt\
+ nyn.txt\
+ om.txt\
+ or.txt\
+ pa.txt\
+ ps.txt\
+ rm.txt\
+ rw.txt\
+ si.txt\
+ sn.txt\
+ so.txt\
+ sq.txt\
+ ti.txt\
+ tl.txt\
+ to.txt\
+ ur.txt\
+ uz.txt\
+ yo.txt\
+ zu.txt
--- source/data/region/reslocal.mk	1969-12-31 16:00:00.000000000 -0800
+++ source/data/region/reslocal.mk	2012-02-01 10:16:51.945070000 -0800
@@ -0,0 +1,77 @@
+# *   Copyright (C) 1998-2010, International Business Machines
+# *   Corporation and others.  All Rights Reserved.
+REGION_CLDR_VERSION = 1.9
+# A list of txt's to build
+# The downstream packager may not need this file at all if their package is not
+# constrained by
+# the size (and/or their target OS already has ICU with the full locale data.)
+#
+# Listed below are locale data files necessary for 40 + 1 + 8 languages Chrome
+# is localized to.
+#
+# In addition to them, 40+ "abridged" locale data files are listed. Chrome is
+# localized to them, but
+# uses a few categories of data in those locales for IDN handling and language
+# name listing (in the UI).
+# Aliases which do not have a corresponding xx.xml file (see icu-config.xml &
+# build.xml)
+REGION_SYNTHETIC_ALIAS =
+
+# All aliases (to not be included under 'installed'), but not including root.
+REGION_ALIAS_SOURCE = $(REGION_SYNTHETIC_ALIAS)\
+ zh_CN.txt zh_TW.txt zh_HK.txt zh_SG.txt\
+ no.txt in.txt iw.txt
+
+# Ordinary resources
+REGION_SOURCE =\
+ am.txt\
+ ar.txt\
+ bg.txt\
+ bn.txt\
+ ca.txt\
+ cs.txt\
+ da.txt\
+ de.txt\
+ el.txt\
+ en.txt\
+ es.txt\
+ es_CL.txt\
+ et.txt\
+ fa.txt\
+ fi.txt\
+ fil.txt\
+ fr.txt\
+ gu.txt\
+ he.txt\
+ hi.txt\
+ hr.txt\
+ hu.txt\
+ id.txt\
+ it.txt\
+ ja.txt\
+ kn.txt\
+ ko.txt\
+ lt.txt\
+ lv.txt\
+ ml.txt\
+ mr.txt\
+ ms.txt\
+ nb.txt\
+ nl.txt\
+ pl.txt\
+ pt.txt pt_PT.txt\
+ ro.txt\
+ ru.txt\
+ sk.txt\
+ sl.txt\
+ sr.txt\
+ sv.txt\
+ sw.txt\
+ ta.txt\
+ te.txt\
+ th.txt\
+ tr.txt\
+ uk.txt\
+ vi.txt\
+ zh.txt zh_Hans.txt zh_Hans_CN.txt zh_Hans_SG.txt\
+ zh_Hant.txt zh_Hant_TW.txt zh_Hant_HK.txt
--- source/data/translit/trnslocal.mk	1969-12-31 16:00:00.000000000 -0800
+++ source/data/translit/trnslocal.mk	2011-01-11 15:38:04.169431000 -0800
@@ -0,0 +1 @@
+TRANSLIT_SOURCE=
--- source/data/zone/reslocal.mk	1969-12-31 16:00:00.000000000 -0800
+++ source/data/zone/reslocal.mk	2012-02-01 10:14:49.563869000 -0800
@@ -0,0 +1,76 @@
+# *   Copyright (C) 1998-2010, International Business Machines
+# *   Corporation and others.  All Rights Reserved.
+ZONE_CLDR_VERSION = 1.9
+# A list of txt's to build
+# The downstream packager may not need this file at all if their package is not
+# constrained by
+# the size (and/or their target OS already has ICU with the full locale data.)
+#
+# Listed below are locale data files necessary for 40 + 1 + 8 languages Chrome
+# is localized to.
+#
+# In addition to them, 40+ "abridged" locale data files are listed. Chrome is
+# localized to them, but
+# uses a few categories of data in those locales for IDN handling and language
+# name listing (in the UI).
+# Aliases which do not have a corresponding xx.xml file (see icu-config.xml &
+# build.xml)
+ZONE_SYNTHETIC_ALIAS =
+
+# All aliases (to not be included under 'installed'), but not including root.
+ZONE_ALIAS_SOURCE = $(ZONE_SYNTHETIC_ALIAS)\
+ zh_CN.txt zh_TW.txt zh_HK.txt zh_SG.txt\
+ no.txt in.txt iw.txt
+
+# Ordinary resources
+ZONE_SOURCE =\
+ am.txt\
+ ar.txt\
+ bg.txt\
+ bn.txt\
+ ca.txt\
+ cs.txt\
+ da.txt\
+ de.txt\
+ el.txt\
+ en.txt en_GB.txt\
+ es.txt\
+ et.txt\
+ fa.txt\
+ fi.txt\
+ fil.txt\
+ fr.txt\
+ gu.txt\
+ he.txt\
+ hi.txt\
+ hr.txt\
+ hu.txt\
+ id.txt\
+ it.txt\
+ ja.txt\
+ kn.txt\
+ ko.txt\
+ lt.txt\
+ lv.txt\
+ ml.txt\
+ mr.txt\
+ ms.txt\
+ nb.txt\
+ nl.txt\
+ pl.txt\
+ pt.txt pt_PT.txt\
+ ro.txt\
+ ru.txt\
+ sk.txt\
+ sl.txt\
+ sr.txt\
+ sv.txt\
+ sw.txt\
+ ta.txt\
+ te.txt\
+ th.txt\
+ tr.txt\
+ uk.txt\
+ vi.txt\
+ zh.txt zh_Hans.txt zh_Hans_CN.txt zh_Hans_SG.txt\
+ zh_Hant.txt zh_Hant_TW.txt zh_Hant_HK.txt
--- source/data/rbnf/rbnflocal.mk	1969-12-31 16:00:00.000000000 -0800
+++ source/data/rbnf/rbnflocal.mk	2011-01-25 12:39:23.083077000 -0800
@@ -0,0 +1,28 @@
+# *   Copyright (C) 1998-2010, International Business Machines
+# *   Corporation and others.  All Rights Reserved.
+RBNF_CLDR_VERSION = 1.9
+# A list of txt's to build
+# Note:
+#
+#
+#  * To add an additional locale to the list:
+#    _____________________________________________________
+#    |  RBNF_SOURCE_LOCAL =   myLocale.txt ...
+#
+#  * To REPLACE the default list and only build with a few
+#    locales:
+#    _____________________________________________________
+#    |  RBNF_SOURCE = ar.txt ar_AE.txt en.txt de.txt zh.txt
+#
+# Chrome note: RBNF is not used by Chrome/Webkit. So, we don't include them.
+
+# Aliases without a corresponding xx.xml file (see icu-config.xml & build.xml)
+RBNF_SYNTHETIC_ALIAS =
+
+
+# All aliases (to not be included under 'installed'), but not including root.
+RBNF_ALIAS_SOURCE = $(RBNF_SYNTHETIC_ALIAS)
+
+
+# Ordinary resources
+RBNF_SOURCE =
--- source/data/sprep/spreplocal.mk	1969-12-31 16:00:00.000000000 -0800
+++ source/data/sprep/spreplocal.mk	2011-01-25 09:19:37.582533000 -0800
@@ -0,0 +1,27 @@
+# *   Copyright (C) 2011, International Business Machines
+# *   Corporation and others.  All Rights Reserved.
+# A list of txt's to build
+#
+#  * To add an additional locale to the list: 
+#    _____________________________________________________
+#    |  SPREP_SOURCE_LOCAL =   myStringPrep.txt ...
+#
+#  * To REPLACE the default list and only build a subset of files:
+#    _____________________________________________________
+#    |  SPREP_SOURCE = rfc4518.txt
+#
+# Chromium: Drop all other stringprep files other than RFC 3491 for IDNA 2003. ICU 4.6
+# supports UTS 46 (IDNA2003, transition, and IDNA 2008).
+# If we ever need to support other stringprep (e.g. LDAP, XMPP, SASL), we have to add back
+# the corresponding prep files.
+# rfc3491 : stringprep profile for IDN 2003
+# rfc3530 : NFS
+# rfc3722 : String Profile for Internet Small Computer 
+#           Systems Interface (iSCSI) Names
+# rfc3920 : XMPP (Extensible Messaging and Presence Protocol)
+# rfc4011 : Policy Based Management Information Base, SNMP
+# rfc4013 : SASLprep: Stringprep Profile for User Names and Passwords
+# rfc4505 :  Anonymous Simple Authentication and Security Layer (SASL) Mechanism
+# rfc4518 : LDAP  Internationalized String Preparation
+#
+SPREP_SOURCE = rfc3491.txt
