summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlararennie@google.com <lararennie@google.com@ee073f10-1060-11df-b6a4-87a95322a99c>2013-07-12 15:09:24 +0000
committerlararennie@google.com <lararennie@google.com@ee073f10-1060-11df-b6a4-87a95322a99c>2013-07-12 15:09:24 +0000
commit7fee6b5f270aaaf097d7061ec2917b69e3039e78 (patch)
tree2a5aad6c725db251bc9763f995e0a4d3615d7fac
parent2455a1e00b592bef3be285992384e584c90a66e0 (diff)
downloadandroid_external_libphonenumbergoogle-7fee6b5f270aaaf097d7061ec2917b69e3039e78.tar.gz
android_external_libphonenumbergoogle-7fee6b5f270aaaf097d7061ec2917b69e3039e78.tar.bz2
android_external_libphonenumbergoogle-7fee6b5f270aaaf097d7061ec2917b69e3039e78.zip
JAVA/DATA/TOOLS: Adding some short number metadata separately, and adjusting the build tools to handle this.
git-svn-id: http://libphonenumber.googlecode.com/svn/trunk@589 ee073f10-1060-11df-b6a4-87a95322a99c
-rw-r--r--java/build.xml14
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/ShortNumbersRegionCodeSet.java86
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AMbin0 -> 235 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ARbin0 -> 214 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BDbin0 -> 226 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CHbin0 -> 265 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CRbin0 -> 214 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CUbin0 -> 226 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CZbin0 -> 226 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DEbin0 -> 214 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_EEbin0 -> 214 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FJbin0 -> 244 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FKbin0 -> 214 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FObin0 -> 226 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FRbin0 -> 426 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GBbin0 -> 247 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GGbin0 -> 226 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GIbin0 -> 235 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GTbin0 -> 226 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GYbin0 -> 226 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_HTbin0 -> 214 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ILbin0 -> 214 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IMbin0 -> 226 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ITbin0 -> 226 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_JEbin0 -> 235 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_JObin0 -> 214 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KEbin0 -> 226 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KIbin0 -> 226 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KWbin0 -> 214 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LIbin0 -> 226 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LUbin0 -> 217 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MDbin0 -> 226 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MEbin0 -> 226 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MUbin0 -> 238 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MVbin0 -> 214 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MZbin0 -> 214 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NAbin0 -> 235 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NCbin0 -> 214 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NLbin0 -> 217 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NRbin0 -> 214 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PAbin0 -> 217 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PYbin0 -> 220 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_QAbin0 -> 238 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_RSbin0 -> 226 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SAbin0 -> 235 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SBbin0 -> 223 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SCbin0 -> 235 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SGbin0 -> 235 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SHbin0 -> 226 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SRbin0 -> 226 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TLbin0 -> 214 bytes
-rw-r--r--java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_UYbin0 -> 214 bytes
-rw-r--r--resources/ShortNumberMetadata.xml1301
-rw-r--r--tools/java/common/src/com/google/i18n/phonenumbers/BuildMetadataFromXml.java4
-rw-r--r--tools/java/cpp-build/target/cpp-build-1.0-SNAPSHOT-jar-with-dependencies.jarbin515305 -> 515285 bytes
-rw-r--r--tools/java/java-build/src/com/google/i18n/phonenumbers/BuildMetadataProtoFromXml.java40
-rw-r--r--tools/java/java-build/target/java-build-1.0-SNAPSHOT-jar-with-dependencies.jarbin329947 -> 355174 bytes
57 files changed, 1437 insertions, 8 deletions
diff --git a/java/build.xml b/java/build.xml
index baceb90..01a19db 100644
--- a/java/build.xml
+++ b/java/build.xml
@@ -41,6 +41,20 @@
</exec>
</target>
+ <target name="build-short-metadata">
+ <exec executable="java">
+ <arg value="-jar" />
+ <arg value="${build.tools.jar}"/>
+ <arg value="BuildMetadataProtoFromXml"/>
+ <arg value="--input-file=${resources.dir}/ShortNumberMetadata.xml"/>
+ <arg value="--output-dir=${libphonenumber.src.dir}/com/google/i18n/phonenumbers"/>
+ <arg value="--data-prefix=data/ShortNumberMetadataProto"/>
+ <arg value="--mapping-class=ShortNumbersRegionCodeSet"/>
+ <arg value="--copyright=2013"/>
+ <arg value="--lite-build=false"/>
+ </exec>
+ </target>
+
<target name="build-test-metadata">
<exec executable="java">
<arg value="-jar" />
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/ShortNumbersRegionCodeSet.java b/java/libphonenumber/src/com/google/i18n/phonenumbers/ShortNumbersRegionCodeSet.java
new file mode 100644
index 0000000..252b4f6
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/ShortNumbersRegionCodeSet.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2013 The Libphonenumber Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* This file is automatically generated by {@link BuildMetadataProtoFromXml}.
+ * Please don't modify it directly.
+ */
+
+package com.google.i18n.phonenumbers;
+
+import java.util.HashSet;
+import java.util.Set;
+
+public class ShortNumbersRegionCodeSet {
+ // A set of all region codes for which data is available.
+ static Set<String> getRegionCodeSet() {
+ // The capacity is set to 1 as there are 50 different entries,
+ // and this offers a load factor of roughly 0.75.
+ Set<String> regionCodeSet = new HashSet<String>(1);
+
+ regionCodeSet.add("AM");
+ regionCodeSet.add("AR");
+ regionCodeSet.add("BD");
+ regionCodeSet.add("CH");
+ regionCodeSet.add("CR");
+ regionCodeSet.add("CU");
+ regionCodeSet.add("CZ");
+ regionCodeSet.add("DE");
+ regionCodeSet.add("EE");
+ regionCodeSet.add("FR");
+ regionCodeSet.add("FJ");
+ regionCodeSet.add("FK");
+ regionCodeSet.add("FO");
+ regionCodeSet.add("GB");
+ regionCodeSet.add("GG");
+ regionCodeSet.add("GI");
+ regionCodeSet.add("GT");
+ regionCodeSet.add("GY");
+ regionCodeSet.add("HT");
+ regionCodeSet.add("IL");
+ regionCodeSet.add("IM");
+ regionCodeSet.add("IT");
+ regionCodeSet.add("JE");
+ regionCodeSet.add("JO");
+ regionCodeSet.add("KE");
+ regionCodeSet.add("KI");
+ regionCodeSet.add("KW");
+ regionCodeSet.add("LI");
+ regionCodeSet.add("LU");
+ regionCodeSet.add("MD");
+ regionCodeSet.add("ME");
+ regionCodeSet.add("MU");
+ regionCodeSet.add("MV");
+ regionCodeSet.add("MZ");
+ regionCodeSet.add("NA");
+ regionCodeSet.add("NC");
+ regionCodeSet.add("NL");
+ regionCodeSet.add("NR");
+ regionCodeSet.add("PA");
+ regionCodeSet.add("PY");
+ regionCodeSet.add("QA");
+ regionCodeSet.add("RS");
+ regionCodeSet.add("SA");
+ regionCodeSet.add("SB");
+ regionCodeSet.add("SC");
+ regionCodeSet.add("SG");
+ regionCodeSet.add("SH");
+ regionCodeSet.add("SR");
+ regionCodeSet.add("TL");
+ regionCodeSet.add("UY");
+
+ return regionCodeSet;
+ }
+}
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AM b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AM
new file mode 100644
index 0000000..0e9080e
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AM
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AR b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AR
new file mode 100644
index 0000000..8d718a2
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AR
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BD b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BD
new file mode 100644
index 0000000..503a867
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BD
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CH b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CH
new file mode 100644
index 0000000..54eeec7
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CH
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CR b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CR
new file mode 100644
index 0000000..9334bdf
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CR
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CU b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CU
new file mode 100644
index 0000000..8f7dc14
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CU
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CZ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CZ
new file mode 100644
index 0000000..19cafbd
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CZ
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DE b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DE
new file mode 100644
index 0000000..1e2f10e
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DE
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_EE b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_EE
new file mode 100644
index 0000000..d64301b
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_EE
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FJ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FJ
new file mode 100644
index 0000000..82c8f13
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FJ
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FK b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FK
new file mode 100644
index 0000000..eaab365
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FK
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FO b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FO
new file mode 100644
index 0000000..1c3c5af
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FO
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FR b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FR
new file mode 100644
index 0000000..e78665b
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FR
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GB b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GB
new file mode 100644
index 0000000..4c2c7e1
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GB
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GG b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GG
new file mode 100644
index 0000000..a635fe5
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GG
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GI b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GI
new file mode 100644
index 0000000..185a070
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GI
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GT b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GT
new file mode 100644
index 0000000..27dd276
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GT
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GY b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GY
new file mode 100644
index 0000000..f517d3c
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GY
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_HT b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_HT
new file mode 100644
index 0000000..87a12db
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_HT
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IL b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IL
new file mode 100644
index 0000000..5eccf83
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IL
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IM b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IM
new file mode 100644
index 0000000..787e2db
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IM
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IT b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IT
new file mode 100644
index 0000000..91a64f5
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IT
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_JE b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_JE
new file mode 100644
index 0000000..dc6507c
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_JE
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_JO b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_JO
new file mode 100644
index 0000000..18a23c1
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_JO
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KE b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KE
new file mode 100644
index 0000000..45ed696
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KE
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KI b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KI
new file mode 100644
index 0000000..c388868
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KI
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KW b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KW
new file mode 100644
index 0000000..b6c6797
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KW
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LI b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LI
new file mode 100644
index 0000000..4ef3269
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LI
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LU b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LU
new file mode 100644
index 0000000..81f1cab
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LU
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MD b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MD
new file mode 100644
index 0000000..caedfc8
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MD
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ME b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ME
new file mode 100644
index 0000000..e8fb198
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ME
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MU b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MU
new file mode 100644
index 0000000..93e5b40
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MU
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MV b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MV
new file mode 100644
index 0000000..5db0ae2
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MV
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MZ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MZ
new file mode 100644
index 0000000..83e308a
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MZ
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NA b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NA
new file mode 100644
index 0000000..97cce4a
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NA
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NC b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NC
new file mode 100644
index 0000000..3fcc43c
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NC
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NL b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NL
new file mode 100644
index 0000000..059f869
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NL
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NR b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NR
new file mode 100644
index 0000000..ab5e8e5
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NR
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PA b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PA
new file mode 100644
index 0000000..209e031
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PA
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PY b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PY
new file mode 100644
index 0000000..2bda927
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PY
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_QA b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_QA
new file mode 100644
index 0000000..2a22f69
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_QA
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_RS b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_RS
new file mode 100644
index 0000000..f0632f3
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_RS
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SA b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SA
new file mode 100644
index 0000000..bcdd702
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SA
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SB b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SB
new file mode 100644
index 0000000..24ae10c
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SB
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SC b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SC
new file mode 100644
index 0000000..15fbb6a
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SC
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SG b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SG
new file mode 100644
index 0000000..7377e18
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SG
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SH b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SH
new file mode 100644
index 0000000..1b79932
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SH
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SR b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SR
new file mode 100644
index 0000000..026114b
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SR
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TL b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TL
new file mode 100644
index 0000000..769406d
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TL
Binary files differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_UY b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_UY
new file mode 100644
index 0000000..4b6535e
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_UY
Binary files differ
diff --git a/resources/ShortNumberMetadata.xml b/resources/ShortNumberMetadata.xml
new file mode 100644
index 0000000..2dff278
--- /dev/null
+++ b/resources/ShortNumberMetadata.xml
@@ -0,0 +1,1301 @@
+<!-- Copyright (C) 2013 The Libphonenumber Authors
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ @author: David Yonge-Mallo
+ @author: Shaopeng Jia
+ @author: Lara Rennie
+
+ Metadata on Short Number patterns, containing information for classifying short numbers by
+ type and cost. Note that this is used in addition to the information provided by the
+ PhoneNumberMetadata.xml file - patterns should not be duplicated between these files.
+ For now, metadata for emergency numbers lives in PhoneNumberMetadata.xml.
+-->
+
+<!DOCTYPE phoneNumberMetadata [
+ <!ELEMENT phoneNumberMetadata (territories)>
+ <!ELEMENT territories (territory+)>
+ <!ELEMENT territory (generalDesc, carrierSpecific?, tollFree?, standardRate?, premiumRate?)>
+ <!ELEMENT generalDesc (nationalNumberPattern, possibleNumberPattern, exampleNumber?)>
+ <!ELEMENT shortCode (nationalNumberPattern?, possibleNumberPattern?, exampleNumber?)>
+
+ <!-- carrierSpecific numbers are numbers which can be called only from a specific carrier,
+ and will not necessarily work on another carrier. -->
+ <!ELEMENT carrierSpecific (nationalNumberPattern, possibleNumberPattern?, exampleNumber?)>
+
+ <!-- The following cost categories are mutually exclusive. Emergency numbers are implicitly
+ considered toll free and do not need to be repeated here. Otherwise, a short number which
+ does not fall into one of these categories is considered to have unknown cost. -->
+ <!ELEMENT tollFree (nationalNumberPattern?, possibleNumberPattern?, exampleNumber?)>
+ <!ELEMENT standardRate (nationalNumberPattern?, possibleNumberPattern?, exampleNumber?)>
+ <!ELEMENT premiumRate (nationalNumberPattern?, possibleNumberPattern?, exampleNumber?)>
+
+ <!ELEMENT nationalNumberPattern (#PCDATA)>
+ <!ELEMENT possibleNumberPattern (#PCDATA)>
+ <!ELEMENT exampleNumber (#PCDATA)>
+
+ <!ATTLIST territory id CDATA #REQUIRED>
+]>
+
+<phoneNumberMetadata>
+ <territories>
+ <!-- Armenia -->
+ <territory id="AM">
+ <generalDesc>
+ <nationalNumberPattern>[18]\d{2,3}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3,4}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <nationalNumberPattern>
+ 8[1-7]\d{2}|
+ 1(?:
+ 0[04-9]|
+ [1-9]\d
+ )
+ </nationalNumberPattern>
+ <exampleNumber>8711</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Argentina -->
+ <territory id="AR">
+ <generalDesc>
+ <nationalNumberPattern>1\d{2}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <nationalNumberPattern>
+ 1(?:
+ 0[2356]|
+ 1[02-5]|
+ 21
+ )
+ </nationalNumberPattern>
+ <exampleNumber>121</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Bangladesh -->
+ <territory id="BD">
+ <generalDesc>
+ <nationalNumberPattern>1\d{2,4}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3,5}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <nationalNumberPattern>
+ 1(?:
+ 0(?:
+ [39]|
+ 5(?:
+ 0\d|
+ [1-4]
+ )|
+ 6\d{2}|
+ 7[0-4]|
+ 8[0-29]
+ )|
+ 1[6-9]|
+ 2(?:
+ 2[0-5]|
+ [34]
+ )|
+ 3(?:
+ 1\d?|
+ 3\d|
+ 6[3-6]
+ )|
+ 4(?:
+ 0\d|
+ 1\d{2}
+ )|
+ 5[2-9]
+ )
+ </nationalNumberPattern>
+ <exampleNumber>103</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Switzerland -->
+ <!-- http://www.bakom.admin.ch/themen/telekom/00479/00604/index.html?lang=en -->
+ <!-- http://en.wikipedia.org/wiki/Telephone_numbers_in_Switzerland#Short_numbers -->
+ <!-- http://csi.sunrise.ch/smartzone/_privat/csv_export.php -->
+ <territory id="CH">
+ <generalDesc>
+ <nationalNumberPattern>1\d{2,5}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3,6}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <!-- According to the "E.164 national numbering plan of Switzerland", some short numbers
+ may be accessible from abroad. However, it does not specify which ones. -->
+ <nationalNumberPattern>
+ 1(?:
+ 0[78]\d{2}|
+ 1(?:
+ [278]|
+ 45|
+ 6(?:
+ 000|
+ 111
+ )
+ )|
+ 4(?:
+ [03457]|
+ 1[45]
+ )|
+ 6(?:
+ 00|
+ [1-46]
+ )|
+ 8(?:
+ 02|
+ 1[189]|
+ 50|
+ 7|
+ 8[08]|
+ 99
+ )
+ )|
+ [2-9]\d{2,4}
+ </nationalNumberPattern>
+ <exampleNumber>147</exampleNumber>
+ </shortCode>
+ <expandedEmergency>
+ <nationalNumberPattern>
+ 14(?:
+ [0356]|
+ 1[45]
+ )
+ </nationalNumberPattern>
+ <possibleNumberPattern>\d{3,4}</possibleNumberPattern>
+ <exampleNumber>140</exampleNumber>
+ </expandedEmergency>
+ <tollFree>
+ <nationalNumberPattern>116\d{3}</nationalNumberPattern>
+ <exampleNumber>116000</exampleNumber>
+ </tollFree>
+ <premiumRate>
+ <!-- http://www.zouk88.com/switzerland/index.htm -->
+ <!-- http://aonebill.com/coverage&tariffs#Switzerland -->
+ <nationalNumberPattern>
+ 543|
+ 83111
+ </nationalNumberPattern>
+ <possibleNumberPattern>\d{3,5}</possibleNumberPattern>
+ <exampleNumber>543</exampleNumber>
+ </premiumRate>
+ <carrierSelectionCodes>
+ <!-- https://www.eofcom.admin.ch/eofcom/public/listEofcom_cscAllocated.do -->
+ <nationalNumberPattern>10[78]\d{2}</nationalNumberPattern>
+ <possibleNumberPattern>\d{5}</possibleNumberPattern>
+ <exampleNumber>10742</exampleNumber>
+ </carrierSelectionCodes>
+ <directoryServices>
+ <nationalNumberPattern>18\d{2}</nationalNumberPattern>
+ <possibleNumberPattern>\d{4}</possibleNumberPattern>
+ <exampleNumber>1818</exampleNumber>
+ </directoryServices>
+ <smsServices>
+ <nationalNumberPattern>[2-9]\d{2,4}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3,6}</possibleNumberPattern>
+ <exampleNumber>600</exampleNumber>
+ </smsServices>
+ <socialServices>
+ <nationalNumberPattern>116\d{3}</nationalNumberPattern>
+ <possibleNumberPattern>\d{6}</possibleNumberPattern>
+ <exampleNumber>116000</exampleNumber>
+ </socialServices>
+ </territory>
+
+ <!-- Costa Rica -->
+ <territory id="CR">
+ <generalDesc>
+ <nationalNumberPattern>1\d{3}</nationalNumberPattern>
+ <possibleNumberPattern>\d{4}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <!-- This pattern excludes 4-digit SMS content numbers for now. -->
+ <nationalNumberPattern>
+ 1(?:
+ 0(?:
+ 00|
+ 15|
+ 2[2-4679]
+ )|
+ 1(?:
+ 1[0-35-9]|
+ 37|
+ [46]6|
+ 7[57]|
+ 8[79]|
+ 9[0-379]
+ )|
+ 2(?:
+ 00|
+ [12]2|
+ 34|
+ 55
+ )|
+ 333|
+ 4(?:
+ 00|
+ 1[56]
+ )|
+ 5(?:
+ 15|
+ 5[15]
+ )|
+ 693|
+ 7(?:
+ 00|
+ 1[789]|
+ 2[02]|
+ [67]7
+ )|
+ 975
+ )
+ </nationalNumberPattern>
+ <exampleNumber>1022</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Cuba -->
+ <territory id="CU">
+ <generalDesc>
+ <nationalNumberPattern>1\d{2,5}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3,6}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <nationalNumberPattern>
+ 1(?:
+ 1(?:
+ 6111|
+ 8
+ )|
+ 40
+ )
+ </nationalNumberPattern>
+ <exampleNumber>140</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Czech Rep. -->
+ <territory id="CZ">
+ <generalDesc>
+ <nationalNumberPattern>1\d{3,5}</nationalNumberPattern>
+ <possibleNumberPattern>\d{4,6}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <nationalNumberPattern>
+ 1(?:
+ 1(?:
+ 6\d{3}|
+ 8\d
+ )|
+ 2\d{2,3}|
+ 3\d{3,4}|
+ 4\d{3}|
+ 99
+ )
+ </nationalNumberPattern>
+ <exampleNumber>116123</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Germany -->
+ <territory id="DE">
+ <generalDesc>
+ <nationalNumberPattern>1\d{2}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <!-- Public Service Number for German administration. -->
+ <nationalNumberPattern>115</nationalNumberPattern>
+ <exampleNumber>115</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Estonia -->
+ <territory id="EE">
+ <generalDesc>
+ <nationalNumberPattern>1\d{2}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <nationalNumberPattern>
+ 1(?:
+ 1[13-9]|
+ [2-9]\d
+ )
+ </nationalNumberPattern>
+ <exampleNumber>116</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- France -->
+ <!-- http://www.arcep.fr/index.php?id=8146 -->
+ <!-- http://fr.wikipedia.org/wiki/Num%C3%A9ro_d'appel_d'urgence -->
+ <territory id="FR">
+ <generalDesc>
+ <nationalNumberPattern>
+ 1\d{1,5}|
+ 3\d{3,4}|
+ [4-8]\d{4}
+ </nationalNumberPattern>
+ <possibleNumberPattern>\d{2,6}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <!-- 110 is a number used for different campaigns such as Sidaction for a limited time only.
+ -->
+ <nationalNumberPattern>
+ 1(?:
+ 0\d{2}|
+ 1(?:
+ [02459]|
+ 6000|
+ 8\d{3}
+ )|
+ [578]
+ )|
+ 3\d{3}
+ </nationalNumberPattern>
+ <exampleNumber>1010</exampleNumber>
+ </shortCode>
+ <tollFree>
+ <!-- http://www.appel118.fr/detail.php#histo -->
+ <!-- Includes some "urgent services" numbers, plus short-codes designated as being free of
+ cost and European harmonised numbers (116XXX). -->
+ <nationalNumberPattern>
+ 1(?:
+ 1(?:
+ [02459]|
+ 6\d{3}|
+ 8710
+ )|
+ [578]
+ )|
+ 3[01]\d{2}
+ </nationalNumberPattern>
+ <exampleNumber>3010</exampleNumber>
+ </tollFree>
+ <standardRate>
+ <!-- http://www.appel118.fr/detail.php#histo -->
+ <nationalNumberPattern>118777</nationalNumberPattern>
+ <possibleNumberPattern>\d{6}</possibleNumberPattern>
+ <exampleNumber>118777</exampleNumber>
+ </standardRate>
+ <premiumRate>
+ <!-- According to
+ http://www.arcep.fr/uploads/tx_gspublication/guide-operateurs-editeurs-sva-sept2012.pdf
+ these numbers may be premium rate or standard rate; here we assume the higher cost.
+ 118XYZ numbers are supposed to be tollfree by 2015 according to
+ http://www.arcep.fr/uploads/tx_gspublication/guide-operateurs-editeurs-sva-sept2012.pdf
+ but their current prices vary: according to http://www.appel118.fr/detail.php#histo
+ only one number is free at the moment, and one number standard rate.
+ SMS Services [4-8]\d{4} vary in price from 0.05 euro to 4.50 euro per SMS, based on
+ prefix - we consider these all premium rate for now. -->
+ <nationalNumberPattern>
+ (?:
+ 1(?:
+ 0|
+ 18(
+ [0-68]\d{3}|
+ 7(?:
+ 0\d|
+ 1[1-9]|
+ [2-9]\d
+ )
+ )
+ )|
+ 3[2-9]|
+ [4-8]\d{2}
+ )\d{2}
+ </nationalNumberPattern>
+ <possibleNumberPattern>\d{4,6}</possibleNumberPattern>
+ <exampleNumber>3200</exampleNumber>
+ </premiumRate>
+ <carrierSelectionCodes>
+ <!-- The specific carrier selection codes have not yet been assigned. -->
+ <nationalNumberPattern>16\d{2}</nationalNumberPattern>
+ <possibleNumberPattern>\d{4}</possibleNumberPattern>
+ <exampleNumber>1600</exampleNumber>
+ </carrierSelectionCodes>
+ <!-- Other services in the French plan: -->
+ <carrierServices>
+ <nationalNumberPattern>10\d{2}</nationalNumberPattern>
+ <possibleNumberPattern>\d{4}</possibleNumberPattern>
+ <exampleNumber>1012</exampleNumber>
+ </carrierServices>
+ <directoryServices>
+ <nationalNumberPattern>118\d{3}</nationalNumberPattern>
+ <possibleNumberPattern>\d{6}</possibleNumberPattern>
+ <exampleNumber>118218</exampleNumber>
+ </directoryServices>
+ <socialServices>
+ <nationalNumberPattern>116\d{3}</nationalNumberPattern>
+ <possibleNumberPattern>\d{6}</possibleNumberPattern>
+ <exampleNumber>116000</exampleNumber>
+ </socialServices>
+ <!-- https://clients.txtnation.com/entries/22523777-France-Premium-SMS-Short-Code-Regulations
+ -->
+ <smsServices>
+ <nationalNumberPattern>[3-8]\d{4}</nationalNumberPattern>
+ <possibleNumberPattern>\d{5}</possibleNumberPattern>
+ <exampleNumber>30000</exampleNumber>
+ </smsServices>
+ </territory>
+
+ <!-- Fiji -->
+ <territory id="FJ">
+ <generalDesc>
+ <nationalNumberPattern>[0-579]\d{1,2}</nationalNumberPattern>
+ <possibleNumberPattern>\d{2,3}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <!-- From the Emergency Numbers page on the Telecom Fiji website. -->
+ <nationalNumberPattern>
+ 0(?:
+ 04|
+ 1[34]|
+ 8[1-4]
+ )|
+ 1(?:
+ 0[1-3]|
+ [25]9
+ )|
+ 2[289]|
+ 30|
+ [45]4|
+ 75|
+ 913
+ </nationalNumberPattern>
+ <exampleNumber>22</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Falkland Islands (Malvinas) -->
+ <territory id="FK">
+ <generalDesc>
+ <nationalNumberPattern>1\d{2}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <!-- Service numbers use 3 digit short codes -->
+ <exampleNumber>123</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Faroe Islands -->
+ <territory id="FO">
+ <generalDesc>
+ <nationalNumberPattern>1\d{2,3}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3,4}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <!-- Includes special numbers, special services and universal services. -->
+ <nationalNumberPattern>
+ 1(?:
+ 1[48]|
+ 4[124]\d|
+ 71\d|
+ 8[7-9]\d
+ )
+ </nationalNumberPattern>
+ <exampleNumber>114</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- United Kingdom -->
+ <territory id="GB">
+ <generalDesc>
+ <nationalNumberPattern>[1-4679]\d{2,5}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3,6}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <!-- This is a list of the ones that can be called (as opposed to numbers used by text
+ delivery or data services). -->
+ <nationalNumberPattern>
+ 1(?:
+ 0[01]|
+ 1(?:
+ 1|
+ [68]\d{3}
+ )|
+ 2[123]|
+ 33|
+ 4(?:
+ 1|
+ 7\d
+ )|
+ 5\d|
+ 70\d|
+ 800\d|
+ 9[15]
+ )|
+ 2(?:
+ 02|
+ 2(?:
+ 02|
+ 11|
+ 2
+ )|
+ 3(?:
+ 02|
+ 45
+ )|
+ 425
+ )|
+ 3[13]3|
+ 4(?:
+ 0[02]|
+ 35[01]|
+ 44[45]|
+ 5\d
+ )|
+ 650|
+ 789|
+ 901
+ </nationalNumberPattern>
+ <exampleNumber>150</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Guernsey -->
+ <territory id="GG">
+ <generalDesc>
+ <nationalNumberPattern>1\d{2,5}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3,6}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <!-- Taken from numbers listed explicitly as Public Telephone Network Numbers in
+ http://stakeholders.ofcom.org.uk/binaries/telecoms/numbering/numplan201210.pdf -->
+ <nationalNumberPattern>
+ 1(?:
+ 0[01]|
+ 1(?:
+ 1|
+ [68]\d{3}
+ )|
+ 23|
+ 4(?:
+ 1|
+ 7\d
+ )|
+ 55|
+ 800\d|
+ 95
+ )
+ </nationalNumberPattern>
+ <exampleNumber>155</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Gibraltar -->
+ <territory id="GI">
+ <generalDesc>
+ <nationalNumberPattern>[18]\d{2,5}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3,6}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <nationalNumberPattern>
+ 1(?:
+ 00|
+ 1(?:
+ 6(?:
+ 00[06]|
+ 11[17]
+ )|
+ 8\d{2}
+ )|
+ 23|
+ 4(?:
+ 1|
+ 7[014]
+ )|
+ 5[015]|
+ 9[34]
+ )|
+ 8(?:
+ 00|
+ 4[0-2]|
+ 8\d
+ )
+ </nationalNumberPattern>
+ <exampleNumber>116000</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Guatemala -->
+ <territory id="GT">
+ <generalDesc>
+ <nationalNumberPattern>1\d{2,3}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3,4}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <nationalNumberPattern>
+ 1(?:
+ 10|
+ 2\d|
+ [57]\d{2}
+ )
+ </nationalNumberPattern>
+ <exampleNumber>123</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Guyana -->
+ <territory id="GY">
+ <generalDesc>
+ <nationalNumberPattern>0\d{2,3}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3,4}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <nationalNumberPattern>
+ 0(?:
+ 02|
+ 171|
+ 444|
+ 7[67]7|
+ 801|
+ 9(?:
+ 0[78]|
+ [2-47]
+ )
+ )
+ </nationalNumberPattern>
+ <exampleNumber>0801</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Haiti -->
+ <territory id="HT">
+ <generalDesc>
+ <nationalNumberPattern>1\d{2}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <exampleNumber>114</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Israel -->
+ <territory id="IL">
+ <generalDesc>
+ <nationalNumberPattern>1\d{3}</nationalNumberPattern>
+ <possibleNumberPattern>\d{4}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <exampleNumber>1455</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Isle of Man -->
+ <territory id="IM">
+ <generalDesc>
+ <nationalNumberPattern>1\d{2,5}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3,6}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <nationalNumberPattern>1\d{2}(?:\d{3})?</nationalNumberPattern>
+ <exampleNumber>150</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Italy -->
+ <territory id="IT">
+ <generalDesc>
+ <nationalNumberPattern>1\d{2,5}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3,6}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <!-- Later, when we have better support for short-codes, we could add the codes
+ used for MMS and SMS services here too. -->
+ <nationalNumberPattern>
+ 1(?:
+ 1(?:
+ [47]|
+ 6\d{3}
+ )|
+ 2\d{2}|
+ 4(?:
+ 82|
+ 9\d{1,3}
+ )|
+ 5(?:
+ 00|
+ 1[58]|
+ 2[25]|
+ 3[03]|
+ 44
+ )|
+ 86|
+ 9(?:
+ 2(?:
+ [01]\d{2}|
+ [2-9]\d
+ )|
+ 4\d|
+ 696
+ )
+ )
+ </nationalNumberPattern>
+ <exampleNumber>114</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Jersey -->
+ <territory id="JE">
+ <generalDesc>
+ <nationalNumberPattern>[12]\d{2,5}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3,6}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <!-- http://www.jcra.je/cms3/v2/public/cmsChild.asp?pageID=1024&childID=1036 -->
+ <nationalNumberPattern>
+ 1(?:
+ 00|
+ 18\d{3}|
+ 23|
+ 4(?:
+ [14]|
+ 28|
+ 7\d
+ )|
+ 5\d|
+ 7(?:
+ 0[12]|
+ [128]|
+ 35?
+ )|
+ 808|
+ 9[135]
+ )|
+ 23[234]
+ </nationalNumberPattern>
+ <exampleNumber>150</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Jordan -->
+ <territory id="JO">
+ <generalDesc>
+ <nationalNumberPattern>1\d{2}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <nationalNumberPattern>
+ 1(?:
+ 09|
+ 1[01]|
+ 9[024-79]
+ )
+ </nationalNumberPattern>
+ <exampleNumber>111</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Kenya -->
+ <territory id="KE">
+ <generalDesc>
+ <nationalNumberPattern>1\d{2,3}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3,4}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <!-- Excluding SMS-only premium-rate short codes for now. -->
+ <nationalNumberPattern>
+ 1(?:
+ 0[09]|
+ 1(?:
+ [06]|
+ 9[0-2579]
+ )|
+ 2[13]|
+ 3[01]
+ )
+ </nationalNumberPattern>
+ <exampleNumber>116</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Kiribati -->
+ <territory id="KI">
+ <generalDesc>
+ <nationalNumberPattern>1\d{2,3}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3,4}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <nationalNumberPattern>
+ 10(?:
+ [0-8]|
+ 5[01259]
+ )
+ </nationalNumberPattern>
+ <exampleNumber>100</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Kuwait -->
+ <territory id="KW">
+ <generalDesc>
+ <nationalNumberPattern>1\d{2}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <nationalNumberPattern>
+ 1(?:
+ [02-9]\d|
+ 1[013-9]
+ )
+ </nationalNumberPattern>
+ <exampleNumber>177</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Liechtenstein -->
+ <territory id="LI">
+ <generalDesc>
+ <nationalNumberPattern>1\d{2,3}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3,4}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <nationalNumberPattern>
+ 1(?:
+ 145|
+ 4(?:
+ [0357]|
+ 14
+ )|
+ 50\d{4}|
+ 6(?:
+ 00|
+ [1-4]
+ )|
+ 75|
+ 8(?:
+ 1[128]|
+ 7
+ )
+ )
+ </nationalNumberPattern>
+ <exampleNumber>1600</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Luxembourg -->
+ <territory id="LU">
+ <generalDesc>
+ <nationalNumberPattern>12\d{3}</nationalNumberPattern>
+ <possibleNumberPattern>\d{5}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <exampleNumber>12123</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Moldova, Rep. of -->
+ <territory id="MD">
+ <generalDesc>
+ <nationalNumberPattern>1\d{2,5}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3,6}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <nationalNumberPattern>
+ 1(?:
+ 1(?:
+ [79]|
+ 6(?:
+ 000|
+ 1(?:
+ 11|
+ 23
+ )
+ )|
+ 8\d
+ )|
+ 4\d{3}|
+ 5[0-3]\d|
+ 6[0-389]\d|
+ 8\d{2}|
+ 9(?:
+ 0[04-9]|
+ [1-4]\d
+ )
+ )
+ </nationalNumberPattern>
+ <exampleNumber>116000</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Montenegro -->
+ <territory id="ME">
+ <generalDesc>
+ <nationalNumberPattern>1\d{2,5}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3,6}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <nationalNumberPattern>
+ 1(?:
+ 16\d{3}|
+ 2(?:
+ [015-9]|
+ \d{2}
+ )|
+ [0135]\d{2}|
+ 4\d{2,3}|
+ 9\d{3}
+ )
+ </nationalNumberPattern>
+ <exampleNumber>1011</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Mauritius -->
+ <territory id="MU">
+ <generalDesc>
+ <nationalNumberPattern>[189]\d{2,4}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3,5}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <nationalNumberPattern>
+ 1\d{2,4}|
+ 8\d{3}|
+ 99\d
+ </nationalNumberPattern>
+ <exampleNumber>995</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Maldives -->
+ <territory id="MV">
+ <generalDesc>
+ <nationalNumberPattern>1\d{2}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <nationalNumberPattern>
+ 1(?:
+ [19]0|
+ 23
+ )
+ </nationalNumberPattern>
+ <exampleNumber>123</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Mozambique -->
+ <territory id="MZ">
+ <generalDesc>
+ <nationalNumberPattern>1\d{3}</nationalNumberPattern>
+ <possibleNumberPattern>\d{4}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <nationalNumberPattern>1[02-5]\d{2}</nationalNumberPattern>
+ <exampleNumber>1011</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Namibia -->
+ <territory id="NA">
+ <generalDesc>
+ <nationalNumberPattern>[19]\d{2,4}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3,5}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <nationalNumberPattern>
+ 1\d{3}|
+ 9(?:
+ 3111|
+ \d{2}
+ )
+ </nationalNumberPattern>
+ <exampleNumber>93111</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- New Caledonia (Territoire français d'outre-mer) -->
+ <territory id="NC">
+ <generalDesc>
+ <nationalNumberPattern>1\d{3}</nationalNumberPattern>
+ <possibleNumberPattern>\d{4}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <!-- OPT: Office des Postes et Télécommunications de Nouvelle Calédonie -->
+ <nationalNumberPattern>
+ 10(?:
+ 0[06]|
+ 1[02-46]|
+ 20|
+ 3[0125]|
+ 42|
+ 5[058]|
+ 77
+ )
+ </nationalNumberPattern>
+ <exampleNumber>1000</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Netherlands -->
+ <territory id="NL">
+ <generalDesc>
+ <nationalNumberPattern>18\d{2}</nationalNumberPattern>
+ <possibleNumberPattern>\d{4}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <exampleNumber>1833</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Nauru -->
+ <territory id="NR">
+ <generalDesc>
+ <nationalNumberPattern>1\d{2}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <nationalNumberPattern>
+ 1(?:
+ 1[0-2]|
+ 23|
+ 92
+ )
+ </nationalNumberPattern>
+ <exampleNumber>110</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Panama -->
+ <territory id="PA">
+ <generalDesc>
+ <nationalNumberPattern>10[2-4]</nationalNumberPattern>
+ <possibleNumberPattern>\d{3}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <exampleNumber>102</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Paraguay -->
+ <territory id="PY">
+ <generalDesc>
+ <nationalNumberPattern>1[1-4]\d</nationalNumberPattern>
+ <possibleNumberPattern>\d{3}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <exampleNumber>123</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Qatar -->
+ <territory id="QA">
+ <generalDesc>
+ <nationalNumberPattern>[129]\d{2,4}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3,5}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <nationalNumberPattern>
+ (?:
+ 1|
+ 20|
+ 9[27]\d
+ )\d{2}
+ </nationalNumberPattern>
+ <exampleNumber>2012</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Serbia -->
+ <territory id="RS">
+ <generalDesc>
+ <nationalNumberPattern>1\d{2,5}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3,6}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <nationalNumberPattern>
+ 1[189]\d{1,4}|
+ 9[234]
+ </nationalNumberPattern>
+ <exampleNumber>112</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Saudi Arabia -->
+ <territory id="SA">
+ <generalDesc>
+ <nationalNumberPattern>[19]\d{2,5}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3,6}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <nationalNumberPattern>
+ 1(?:
+ 16111|
+ 9(?:
+ 00|
+ 1[89]|
+ 9(?:
+ 099|
+ 22|
+ 91
+ )
+ )
+ )|
+ 9(
+ 37|
+ 8[6-8]|
+ 9[2-6]
+ )
+ </nationalNumberPattern>
+ <exampleNumber>937</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Solomon Islands -->
+ <territory id="SB">
+ <generalDesc>
+ <nationalNumberPattern>[19]\d{2}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <nationalNumberPattern>
+ 1(?:
+ 0[02-79]|
+ 1[12]|
+ 2[0-26]|
+ 4[189]|
+ 68
+ )|
+ 9(?:
+ [01]1|
+ 22|
+ 33|
+ 55|
+ 77|
+ 88
+ )
+ </nationalNumberPattern>
+ <exampleNumber>100</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Seychelles -->
+ <territory id="SC">
+ <generalDesc>
+ <nationalNumberPattern>[19]\d{2,3}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3,4}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <nationalNumberPattern>
+ 1(?:
+ 0\d|
+ 1[027]|
+ 2[0-8]|
+ 3[13]|
+ 4[0-2]|
+ [59][15]|
+ 6[1-9]|
+ 7[124-6]|
+ 8[158]
+ )|
+ 96\d{2}
+ </nationalNumberPattern>
+ <exampleNumber>100</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Singapore -->
+ <territory id="SG">
+ <generalDesc>
+ <nationalNumberPattern>[19]\d{2,4}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3,5}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <nationalNumberPattern>
+ 1(?:
+ [0136]\d{2}|
+ [89](?:
+ [1-9]\d|
+ 0[1-9]
+ )|
+ [57]\d{2,3})|
+ 99[0246-8]
+ </nationalNumberPattern>
+ <exampleNumber>1312</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Saint Helena and Tristan da Cunha -->
+ <territory id="SH">
+ <generalDesc>
+ <nationalNumberPattern>1\d{2,3}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3,4}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <exampleNumber>1234</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Suriname -->
+ <territory id="SR">
+ <generalDesc>
+ <nationalNumberPattern>1\d{2,3}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3,4}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <nationalNumberPattern>
+ 1(?:
+ [02-9]\d|
+ 1[0-46-9]|
+ \d{3}
+ )
+ </nationalNumberPattern>
+ <exampleNumber>1234</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Timor-Leste (East Timor) -->
+ <territory id="TL">
+ <generalDesc>
+ <nationalNumberPattern>1\d{2}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <nationalNumberPattern>
+ 1(?:
+ 0[02]|
+ 2[0138]|
+ 72|
+ 9[07]
+ )
+ </nationalNumberPattern>
+ <exampleNumber>102</exampleNumber>
+ </shortCode>
+ </territory>
+
+ <!-- Uruguay -->
+ <territory id="UY">
+ <generalDesc>
+ <nationalNumberPattern>1\d{2}</nationalNumberPattern>
+ <possibleNumberPattern>\d{3}</possibleNumberPattern>
+ </generalDesc>
+ <shortCode>
+ <nationalNumberPattern>
+ 1(?:
+ 0[4-9]|
+ 1[2368]|
+ 2[0-3568]
+ )
+ </nationalNumberPattern>
+ <exampleNumber>104</exampleNumber>
+ </shortCode>
+ </territory>
+ </territories>
+</phoneNumberMetadata>
diff --git a/tools/java/common/src/com/google/i18n/phonenumbers/BuildMetadataFromXml.java b/tools/java/common/src/com/google/i18n/phonenumbers/BuildMetadataFromXml.java
index 15fd2b7..5ce14c2 100644
--- a/tools/java/common/src/com/google/i18n/phonenumbers/BuildMetadataFromXml.java
+++ b/tools/java/common/src/com/google/i18n/phonenumbers/BuildMetadataFromXml.java
@@ -166,7 +166,9 @@ public class BuildMetadataFromXml {
String nationalPrefix) {
PhoneMetadata.Builder metadata = PhoneMetadata.newBuilder();
metadata.setId(regionCode);
- metadata.setCountryCode(Integer.parseInt(element.getAttribute(COUNTRY_CODE)));
+ if (element.hasAttribute(COUNTRY_CODE)) {
+ metadata.setCountryCode(Integer.parseInt(element.getAttribute(COUNTRY_CODE)));
+ }
if (element.hasAttribute(LEADING_DIGITS)) {
metadata.setLeadingDigits(validateRE(element.getAttribute(LEADING_DIGITS)));
}
diff --git a/tools/java/cpp-build/target/cpp-build-1.0-SNAPSHOT-jar-with-dependencies.jar b/tools/java/cpp-build/target/cpp-build-1.0-SNAPSHOT-jar-with-dependencies.jar
index 5398924..60c4d73 100644
--- a/tools/java/cpp-build/target/cpp-build-1.0-SNAPSHOT-jar-with-dependencies.jar
+++ b/tools/java/cpp-build/target/cpp-build-1.0-SNAPSHOT-jar-with-dependencies.jar
Binary files differ
diff --git a/tools/java/java-build/src/com/google/i18n/phonenumbers/BuildMetadataProtoFromXml.java b/tools/java/java-build/src/com/google/i18n/phonenumbers/BuildMetadataProtoFromXml.java
index 452adce..64160b1 100644
--- a/tools/java/java-build/src/com/google/i18n/phonenumbers/BuildMetadataProtoFromXml.java
+++ b/tools/java/java-build/src/com/google/i18n/phonenumbers/BuildMetadataProtoFromXml.java
@@ -177,11 +177,13 @@ public class BuildMetadataProtoFromXml extends Command {
" // country/region represented by that country code. In the case of multiple\n" +
" // countries sharing a calling code, such as the NANPA countries, the one\n" +
" // indicated with \"isMainCountryForCode\" in the metadata should be first.\n";
- private static final String SET_COMMENT =
+ private static final String COUNTRY_CODE_SET_COMMENT =
" // A set of all country codes for which data is available.\n";
+ private static final String REGION_CODE_SET_COMMENT =
+ " // A set of all region codes for which data is available.\n";
private static final double CAPACITY_FACTOR = 0.75;
private static final String CAPACITY_COMMENT =
- " // The capacity is set to %d as there are %d different country codes,\n" +
+ " // The capacity is set to %d as there are %d different entries,\n" +
" // and this offers a load factor of roughly " + CAPACITY_FACTOR + ".\n";
private static void writeCountryCallingCodeMappingToJavaFile(
@@ -197,13 +199,16 @@ public class BuildMetadataProtoFromXml extends Command {
break;
}
}
+ boolean hasCountryCodes = countryCodeToRegionCodeMap.size() > 1;
ClassWriter writer = new ClassWriter(outputDir, mappingClass, copyright);
- if (hasRegionCodes) {
+ if (hasRegionCodes && hasCountryCodes) {
writeMap(writer, capacity, countryCodeToRegionCodeMap);
+ } else if (hasCountryCodes) {
+ writeCountryCodeSet(writer, capacity, countryCodeToRegionCodeMap.keySet());
} else {
- writeSet(writer, capacity, countryCodeToRegionCodeMap.keySet());
+ writeRegionCodeSet(writer, capacity, countryCodeToRegionCodeMap.get(0));
}
writer.writeToFile();
@@ -243,9 +248,30 @@ public class BuildMetadataProtoFromXml extends Command {
writer.addToBody(" }\n");
}
- private static void writeSet(ClassWriter writer, int capacity,
- Set<Integer> countryCodeSet) {
- writer.addToBody(SET_COMMENT);
+ private static void writeRegionCodeSet(ClassWriter writer, int capacity,
+ List<String> regionCodeSet) {
+ writer.addToBody(REGION_CODE_SET_COMMENT);
+
+ writer.addToImports("java.util.HashSet");
+ writer.addToImports("java.util.Set");
+
+ writer.addToBody(" static Set<String> getRegionCodeSet() {\n");
+ writer.formatToBody(CAPACITY_COMMENT, capacity, regionCodeSet.size());
+ writer.addToBody(" Set<String> regionCodeSet = new HashSet<String>(" + capacity + ");\n");
+ writer.addToBody("\n");
+
+ for (String regionCode : regionCodeSet) {
+ writer.addToBody(" regionCodeSet.add(\"" + regionCode + "\");\n");
+ }
+
+ writer.addToBody("\n");
+ writer.addToBody(" return regionCodeSet;\n");
+ writer.addToBody(" }\n");
+ }
+
+ private static void writeCountryCodeSet(ClassWriter writer, int capacity,
+ Set<Integer> countryCodeSet) {
+ writer.addToBody(COUNTRY_CODE_SET_COMMENT);
writer.addToImports("java.util.HashSet");
writer.addToImports("java.util.Set");
diff --git a/tools/java/java-build/target/java-build-1.0-SNAPSHOT-jar-with-dependencies.jar b/tools/java/java-build/target/java-build-1.0-SNAPSHOT-jar-with-dependencies.jar
index b44d6fa..8101287 100644
--- a/tools/java/java-build/target/java-build-1.0-SNAPSHOT-jar-with-dependencies.jar
+++ b/tools/java/java-build/target/java-build-1.0-SNAPSHOT-jar-with-dependencies.jar
Binary files differ