1 // Copyright (C) 2013 Google Inc.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14
15 // AUTOMATICALLY GENERATED FILE - DO NOT EDIT
16
17 #include "region_data_constants.h"
18
19 #include <libaddressinput/address_field.h>
20
21 #include <algorithm>
22 #include <cassert>
23 #include <cstddef>
24 #include <map>
25 #include <string>
26 #include <vector>
27
28 #include "address_field_util.h"
29 #include "format_element.h"
30 #include "lookup_key.h"
31 #include "util/size.h"
32
33 namespace i18n {
34 namespace addressinput {
35 namespace {
36
37 struct RegionData {
38 const char* const region_code;
39 const char* const data;
40 };
41
42 const RegionData kRegionData[] = {
43 {"AC", "{"
44 u8R"("fmt":"%N%n%O%n%A%n%C%n%Z",)"
45 u8R"("zipex":"ASCN 1ZZ",)"
46 u8R"("languages":"en")"
47 "}"},
48 {"AD", "{"
49 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
50 u8R"("zipex":"AD100,AD501,AD700",)"
51 u8R"("posturl":"http://www.correos.es/comun/CodigosPostales/1010_s-CodPostal.asp?Provincia=",)"
52 u8R"("languages":"ca")"
53 "}"},
54 {"AE", "{"
55 u8R"("fmt":"%N%n%O%n%A%n%S",)"
56 u8R"("lfmt":"%N%n%O%n%A%n%S",)"
57 u8R"("require":"AS",)"
58 u8R"("state_name_type":"emirate",)"
59 u8R"("languages":"ar")"
60 "}"},
61 {"AF", "{"
62 u8R"("fmt":"%N%n%O%n%A%n%C%n%Z",)"
63 u8R"("zipex":"1001,2601,3801",)"
64 u8R"("languages":"fa~ps~uz-Arab~tk~bal")"
65 "}"},
66 {"AG", "{"
67 u8R"("require":"A",)"
68 u8R"("languages":"en")"
69 "}"},
70 {"AI", "{"
71 u8R"("fmt":"%N%n%O%n%A%n%C%n%Z",)"
72 u8R"("zipex":"2640",)"
73 u8R"("languages":"en")"
74 "}"},
75 {"AL", "{"
76 u8R"("fmt":"%N%n%O%n%A%n%Z%n%C",)"
77 u8R"("zipex":"1001,1017,3501",)"
78 u8R"("languages":"sq")"
79 "}"},
80 {"AM", "{"
81 u8R"("fmt":"%N%n%O%n%A%n%Z%n%C%n%S",)"
82 u8R"("lfmt":"%N%n%O%n%A%n%Z%n%C%n%S",)"
83 u8R"("zipex":"375010,0002,0010",)"
84 u8R"("languages":"hy")"
85 "}"},
86 {"AO", "{"
87 u8R"("languages":"pt")"
88 "}"},
89 {"AQ", "{"
90 "}"},
91 {"AR", "{"
92 u8R"("fmt":"%N%n%O%n%A%n%Z %C%n%S",)"
93 u8R"("zipex":"C1070AAM,C1000WAM,B1000TBU,X5187XAB",)"
94 u8R"("posturl":"http://www.correoargentino.com.ar/formularios/cpa",)"
95 u8R"("languages":"es")"
96 "}"},
97 {"AS", "{"
98 u8R"("fmt":"%N%n%O%n%A%n%C %S %Z",)"
99 u8R"("require":"ACSZ",)"
100 u8R"("zip_name_type":"zip",)"
101 u8R"("state_name_type":"state",)"
102 u8R"("zipex":"96799",)"
103 u8R"("posturl":"http://zip4.usps.com/zip4/welcome.jsp",)"
104 u8R"("languages":"sm~en")"
105 "}"},
106 {"AT", "{"
107 u8R"("fmt":"%O%n%N%n%A%n%Z %C",)"
108 u8R"("require":"ACZ",)"
109 u8R"("zipex":"1010,3741",)"
110 u8R"("posturl":"http://www.post.at/post_subsite_postleitzahlfinder.php",)"
111 u8R"("languages":"de~hr~sl~hu")"
112 "}"},
113 {"AU", "{"
114 u8R"("fmt":"%O%n%N%n%A%n%C %S %Z",)"
115 u8R"("require":"ACSZ",)"
116 u8R"("state_name_type":"state",)"
117 u8R"("locality_name_type":"suburb",)"
118 u8R"("zipex":"2060,3171,6430,4000,4006,3001",)"
119 u8R"("posturl":"http://www1.auspost.com.au/postcodes/",)"
120 u8R"("languages":"en")"
121 "}"},
122 {"AW", "{"
123 u8R"("languages":"nl~pap")"
124 "}"},
125 {"AX", "{"
126 u8R"("fmt":"%O%n%N%n%A%nAX-%Z %C%nÅLAND",)"
127 u8R"("require":"ACZ",)"
128 u8R"("zipex":"22150,22550,22240,22710,22270,22730,22430",)"
129 u8R"("posturl":"https://www.alandpost.ax/privat/skicka-brev/postnummer-pa-aland/postnummersokning",)"
130 u8R"("languages":"sv")"
131 "}"},
132 {"AZ", "{"
133 u8R"("fmt":"%N%n%O%n%A%nAZ %Z %C",)"
134 u8R"("zipex":"1000",)"
135 u8R"("languages":"az~az-Cyrl")"
136 "}"},
137 {"BA", "{"
138 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
139 u8R"("zipex":"71000",)"
140 u8R"("languages":"bs~bs-Cyrl~hr~sr~sr-Latn")"
141 "}"},
142 {"BB", "{"
143 u8R"("fmt":"%N%n%O%n%A%n%C, %S %Z",)"
144 u8R"("state_name_type":"parish",)"
145 u8R"("zipex":"BB23026,BB22025",)"
146 u8R"("languages":"en")"
147 "}"},
148 {"BD", "{"
149 u8R"("fmt":"%N%n%O%n%A%n%C - %Z",)"
150 u8R"("zipex":"1340,1000",)"
151 u8R"("posturl":"http://www.bangladeshpost.gov.bd/PostCode.asp",)"
152 u8R"("languages":"bn")"
153 "}"},
154 {"BE", "{"
155 u8R"("fmt":"%O%n%N%n%A%n%Z %C",)"
156 u8R"("require":"ACZ",)"
157 u8R"("zipex":"4000,1000",)"
158 u8R"("posturl":"http://www.post.be/site/nl/residential/customerservice/search/postal_codes.html",)"
159 u8R"("languages":"nl~fr~de")"
160 "}"},
161 {"BF", "{"
162 u8R"("fmt":"%N%n%O%n%A%n%C %X",)"
163 u8R"("languages":"fr")"
164 "}"},
165 {"BG", "{"
166 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
167 u8R"("zipex":"1000,1700",)"
168 u8R"("posturl":"http://www.bgpost.bg/?cid=5",)"
169 u8R"("languages":"bg")"
170 "}"},
171 {"BH", "{"
172 u8R"("fmt":"%N%n%O%n%A%n%C %Z",)"
173 u8R"("zipex":"317",)"
174 u8R"("languages":"ar")"
175 "}"},
176 {"BI", "{"
177 u8R"("languages":"rn~fr~en")"
178 "}"},
179 {"BJ", "{"
180 u8R"("languages":"fr")"
181 "}"},
182 {"BL", "{"
183 u8R"("fmt":"%O%n%N%n%A%n%Z %C %X",)"
184 u8R"("require":"ACZ",)"
185 u8R"("zipex":"97100",)"
186 u8R"("posturl":"http://www.laposte.fr/Particulier/Utiliser-nos-outils-pratiques/Outils-et-documents/Trouvez-un-code-postal",)"
187 u8R"("languages":"fr")"
188 "}"},
189 {"BM", "{"
190 u8R"("fmt":"%N%n%O%n%A%n%C %Z",)"
191 u8R"("zipex":"FL 07,HM GX,HM 12",)"
192 u8R"("posturl":"http://www.landvaluation.bm/",)"
193 u8R"("languages":"en")"
194 "}"},
195 {"BN", "{"
196 u8R"("fmt":"%N%n%O%n%A%n%C %Z",)"
197 u8R"("zipex":"BT2328,KA1131,BA1511",)"
198 u8R"("posturl":"http://www.post.gov.bn/SitePages/postcodes.aspx",)"
199 u8R"("languages":"ms~ms-Arab")"
200 "}"},
201 {"BO", "{"
202 u8R"("languages":"es~qu~ay")"
203 "}"},
204 {"BQ", "{"
205 u8R"("languages":"nl")"
206 "}"},
207 {"BR", "{"
208 u8R"("fmt":"%O%n%N%n%A%n%D%n%C-%S%n%Z",)"
209 u8R"("require":"ASCZ",)"
210 u8R"("state_name_type":"state",)"
211 u8R"("sublocality_name_type":"neighborhood",)"
212 u8R"("zipex":"40301-110,70002-900",)"
213 u8R"("posturl":"http://www.buscacep.correios.com.br/",)"
214 u8R"("languages":"pt")"
215 "}"},
216 {"BS", "{"
217 u8R"("fmt":"%N%n%O%n%A%n%C, %S",)"
218 u8R"("state_name_type":"island",)"
219 u8R"("languages":"en")"
220 "}"},
221 {"BT", "{"
222 u8R"("fmt":"%N%n%O%n%A%n%C %Z",)"
223 u8R"("zipex":"11001,31101,35003",)"
224 u8R"("posturl":"http://www.bhutanpost.bt/postcodes/",)"
225 u8R"("languages":"dz")"
226 "}"},
227 {"BV", "{"
228 "}"},
229 {"BW", "{"
230 u8R"("languages":"en~tn")"
231 "}"},
232 {"BY", "{"
233 u8R"("fmt":"%S%n%Z %C%n%A%n%O%n%N",)"
234 u8R"("zipex":"223016,225860,220050",)"
235 u8R"("posturl":"http://ex.belpost.by/addressbook/",)"
236 u8R"("languages":"be~ru")"
237 "}"},
238 {"BZ", "{"
239 u8R"("languages":"en")"
240 "}"},
241 {"CA", "{"
242 u8R"("fmt":"%N%n%O%n%A%n%C %S %Z",)"
243 u8R"("require":"ACSZ",)"
244 u8R"("zipex":"H3Z 2Y7,V8X 3X4,T0L 1K0,T0H 1A0,K1A 0B1",)"
245 u8R"("posturl":"https://www.canadapost.ca/cpo/mc/personal/postalcode/fpc.jsf",)"
246 u8R"("languages":"en~fr")"
247 "}"},
248 {"CC", "{"
249 u8R"("fmt":"%O%n%N%n%A%n%C %S %Z",)"
250 u8R"("zipex":"6799",)"
251 u8R"("languages":"en")"
252 "}"},
253 {"CD", "{"
254 u8R"("languages":"sw~lua~fr~ln~kg")"
255 "}"},
256 {"CF", "{"
257 u8R"("languages":"fr~sg")"
258 "}"},
259 {"CG", "{"
260 u8R"("languages":"fr")"
261 "}"},
262 {"CH", "{"
263 u8R"("fmt":"%O%n%N%n%A%nCH-%Z %C",)"
264 u8R"("require":"ACZ",)"
265 u8R"("zipex":"2544,1211,1556,3030",)"
266 u8R"("posturl":"http://www.post.ch/db/owa/pv_plz_pack/pr_main",)"
267 u8R"("languages":"de~gsw~fr~it~rm")"
268 "}"},
269 {"CI", "{"
270 u8R"("fmt":"%N%n%O%n%X %A %C %X",)"
271 u8R"("languages":"fr")"
272 "}"},
273 {"CK", "{"
274 u8R"("languages":"en")"
275 "}"},
276 {"CL", "{"
277 u8R"("fmt":"%N%n%O%n%A%n%Z %C%n%S",)"
278 u8R"("zipex":"8340457,8720019,1230000,8329100",)"
279 u8R"("posturl":"http://www.correos.cl/SitePages/home.aspx",)"
280 u8R"("languages":"es")"
281 "}"},
282 {"CM", "{"
283 u8R"("languages":"fr~en")"
284 "}"},
285 {"CN", "{"
286 u8R"("fmt":"%Z%n%S%C%D%n%A%n%O%n%N",)"
287 u8R"("lfmt":"%N%n%O%n%A%n%D%n%C%n%S, %Z",)"
288 u8R"("require":"ACSZ",)"
289 u8R"("sublocality_name_type":"district",)"
290 u8R"("zipex":"266033,317204,100096,100808",)"
291 u8R"("posturl":"http://www.ems.com.cn/serviceguide/you_bian_cha_xun.html",)"
292 u8R"("languages":"zh")"
293 "}"},
294 {"CO", "{"
295 u8R"("fmt":"%N%n%O%n%A%n%C, %S, %Z",)"
296 u8R"("require":"AS",)"
297 u8R"("state_name_type":"department",)"
298 u8R"("zipex":"111221,130001,760011",)"
299 u8R"("posturl":"http://www.codigopostal.gov.co/",)"
300 u8R"("languages":"es")"
301 "}"},
302 {"CR", "{"
303 u8R"("fmt":"%N%n%O%n%A%n%S, %C%n%Z",)"
304 u8R"("require":"ACS",)"
305 u8R"("zipex":"1000,2010,1001",)"
306 u8R"("posturl":"https://www.correos.go.cr/nosotros/codigopostal/busqueda.html",)"
307 u8R"("languages":"es")"
308 "}"},
309 {"CU", "{"
310 u8R"("fmt":"%N%n%O%n%A%n%C %S%n%Z",)"
311 u8R"("zipex":"10700",)"
312 u8R"("languages":"es")"
313 "}"},
314 {"CV", "{"
315 u8R"("fmt":"%N%n%O%n%A%n%Z %C%n%S",)"
316 u8R"("state_name_type":"island",)"
317 u8R"("zipex":"7600",)"
318 u8R"("languages":"pt")"
319 "}"},
320 {"CW", "{"
321 u8R"("languages":"pap~nl")"
322 "}"},
323 {"CX", "{"
324 u8R"("fmt":"%O%n%N%n%A%n%C %S %Z",)"
325 u8R"("zipex":"6798",)"
326 u8R"("languages":"en")"
327 "}"},
328 {"CY", "{"
329 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
330 u8R"("zipex":"2008,3304,1900",)"
331 u8R"("languages":"el~tr")"
332 "}"},
333 {"CZ", "{"
334 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
335 u8R"("require":"ACZ",)"
336 u8R"("zipex":"100 00,251 66,530 87,110 00,225 99",)"
337 u8R"("posturl":"http://psc.ceskaposta.cz/CleanForm.action",)"
338 u8R"("languages":"cs")"
339 "}"},
340 {"DE", "{"
341 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
342 u8R"("require":"ACZ",)"
343 u8R"("zipex":"26133,53225",)"
344 u8R"("posturl":"http://www.postdirekt.de/plzserver/",)"
345 u8R"("languages":"de")"
346 "}"},
347 {"DJ", "{"
348 u8R"("languages":"ar~fr")"
349 "}"},
350 {"DK", "{"
351 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
352 u8R"("require":"ACZ",)"
353 u8R"("zipex":"8660,1566",)"
354 u8R"("posturl":"http://www.postdanmark.dk/da/Privat/Kundeservice/postnummerkort/Sider/Find-postnummer.aspx",)"
355 u8R"("languages":"da~de~kl")"
356 "}"},
357 {"DM", "{"
358 u8R"("languages":"en")"
359 "}"},
360 {"DO", "{"
361 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
362 u8R"("zipex":"11903,10101",)"
363 u8R"("posturl":"http://inposdom.gob.do/codigo-postal/",)"
364 u8R"("languages":"es")"
365 "}"},
366 {"DZ", "{"
367 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
368 u8R"("zipex":"40304,16027",)"
369 u8R"("languages":"ar~fr")"
370 "}"},
371 {"EC", "{"
372 u8R"("fmt":"%N%n%O%n%A%n%Z%n%C",)"
373 u8R"("zipex":"090105,092301",)"
374 u8R"("posturl":"http://www.codigopostal.gob.ec/",)"
375 u8R"("languages":"es~qu")"
376 "}"},
377 {"EE", "{"
378 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
379 u8R"("require":"ACZ",)"
380 u8R"("zipex":"69501,11212",)"
381 u8R"("posturl":"https://www.omniva.ee/era/sihtnumbrite_otsing",)"
382 u8R"("languages":"et")"
383 "}"},
384 {"EG", "{"
385 u8R"("fmt":"%N%n%O%n%A%n%C%n%S%n%Z",)"
386 u8R"("lfmt":"%N%n%O%n%A%n%C%n%S%n%Z",)"
387 u8R"("zipex":"12411,11599",)"
388 u8R"("languages":"ar")"
389 "}"},
390 {"EH", "{"
391 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
392 u8R"("zipex":"70000,72000",)"
393 u8R"("languages":"ar")"
394 "}"},
395 {"ER", "{"
396 u8R"("languages":"ti~en~ar")"
397 "}"},
398 {"ES", "{"
399 u8R"("fmt":"%N%n%O%n%A%n%Z %C %S",)"
400 u8R"("require":"ACSZ",)"
401 u8R"("zipex":"28039,28300,28070",)"
402 u8R"("posturl":"http://www.correos.es/contenido/13-MenuRec2/04-MenuRec24/1010_s-CodPostal.asp",)"
403 u8R"("languages":"es~ca~gl~eu")"
404 "}"},
405 {"ET", "{"
406 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
407 u8R"("zipex":"1000",)"
408 u8R"("languages":"am")"
409 "}"},
410 {"FI", "{"
411 u8R"("fmt":"%O%n%N%n%A%nFI-%Z %C",)"
412 u8R"("require":"ACZ",)"
413 u8R"("zipex":"00550,00011",)"
414 u8R"("posturl":"https://support.posti.fi/fi/tyokalut/postinumerohaku.html",)"
415 u8R"("languages":"fi~sv")"
416 "}"},
417 {"FJ", "{"
418 u8R"("languages":"en~hif~fj")"
419 "}"},
420 {"FK", "{"
421 u8R"("fmt":"%N%n%O%n%A%n%C%n%Z",)"
422 u8R"("require":"ACZ",)"
423 u8R"("zipex":"FIQQ 1ZZ",)"
424 u8R"("languages":"en")"
425 "}"},
426 {"FM", "{"
427 u8R"("fmt":"%N%n%O%n%A%n%C %S %Z",)"
428 u8R"("require":"ACSZ",)"
429 u8R"("zip_name_type":"zip",)"
430 u8R"("state_name_type":"state",)"
431 u8R"("zipex":"96941,96944",)"
432 u8R"("posturl":"http://zip4.usps.com/zip4/welcome.jsp",)"
433 u8R"("languages":"en")"
434 "}"},
435 {"FO", "{"
436 u8R"("fmt":"%N%n%O%n%A%nFO%Z %C",)"
437 u8R"("zipex":"100",)"
438 u8R"("posturl":"http://www.postur.fo/",)"
439 u8R"("languages":"fo")"
440 "}"},
441 {"FR", "{"
442 u8R"("fmt":"%O%n%N%n%A%n%Z %C",)"
443 u8R"("require":"ACZ",)"
444 u8R"("zipex":"33380,34092,33506",)"
445 u8R"("posturl":"http://www.laposte.fr/Particulier/Utiliser-nos-outils-pratiques/Outils-et-documents/Trouvez-un-code-postal",)"
446 u8R"("languages":"fr")"
447 "}"},
448 {"GA", "{"
449 u8R"("languages":"fr")"
450 "}"},
451 {"GB", "{"
452 u8R"("fmt":"%N%n%O%n%A%n%C%n%Z",)"
453 u8R"("require":"ACZ",)"
454 u8R"("locality_name_type":"post_town",)"
455 u8R"("zipex":"EC1Y 8SY,GIR 0AA,M2 5BQ,M34 4AB,CR0 2YR,DN16 9AA,W1A 4ZZ,EC1A 1HQ,OX14 4PG,BS18 8HF,NR25 7HG,RH6 0NP,BH23 6AA,B6 5BA,SO23 9AP,PO1 3AX,BFPO 61",)"
456 u8R"("posturl":"http://www.royalmail.com/postcode-finder",)"
457 u8R"("languages":"en~cy~gd~ga")"
458 "}"},
459 {"GD", "{"
460 u8R"("languages":"en")"
461 "}"},
462 {"GE", "{"
463 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
464 u8R"("zipex":"0101",)"
465 u8R"("posturl":"http://www.georgianpost.ge/index.php?page=10",)"
466 u8R"("languages":"ka~ab~os")"
467 "}"},
468 {"GF", "{"
469 u8R"("fmt":"%O%n%N%n%A%n%Z %C %X",)"
470 u8R"("require":"ACZ",)"
471 u8R"("zipex":"97300",)"
472 u8R"("posturl":"http://www.laposte.fr/Particulier/Utiliser-nos-outils-pratiques/Outils-et-documents/Trouvez-un-code-postal",)"
473 u8R"("languages":"fr")"
474 "}"},
475 {"GG", "{"
476 u8R"("fmt":"%N%n%O%n%A%n%C%nGUERNSEY%n%Z",)"
477 u8R"("require":"ACZ",)"
478 u8R"("zipex":"GY1 1AA,GY2 2BT",)"
479 u8R"("posturl":"http://www.guernseypost.com/postcode_finder/",)"
480 u8R"("languages":"en")"
481 "}"},
482 {"GH", "{"
483 u8R"("languages":"ak~en~ee~gaa")"
484 "}"},
485 {"GI", "{"
486 u8R"("fmt":"%N%n%O%n%A%nGIBRALTAR%n%Z",)"
487 u8R"("require":"A",)"
488 u8R"("zipex":"GX11 1AA",)"
489 u8R"("languages":"en")"
490 "}"},
491 {"GL", "{"
492 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
493 u8R"("require":"ACZ",)"
494 u8R"("zipex":"3900,3950,3911",)"
495 u8R"("languages":"kl")"
496 "}"},
497 {"GM", "{"
498 u8R"("languages":"en")"
499 "}"},
500 {"GN", "{"
501 u8R"("fmt":"%N%n%O%n%Z %A %C",)"
502 u8R"("zipex":"001,200,100",)"
503 u8R"("languages":"fr")"
504 "}"},
505 {"GP", "{"
506 u8R"("fmt":"%O%n%N%n%A%n%Z %C %X",)"
507 u8R"("require":"ACZ",)"
508 u8R"("zipex":"97100",)"
509 u8R"("posturl":"http://www.laposte.fr/Particulier/Utiliser-nos-outils-pratiques/Outils-et-documents/Trouvez-un-code-postal",)"
510 u8R"("languages":"fr")"
511 "}"},
512 {"GQ", "{"
513 u8R"("languages":"es~fr~pt")"
514 "}"},
515 {"GR", "{"
516 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
517 u8R"("require":"ACZ",)"
518 u8R"("zipex":"151 24,151 10,101 88",)"
519 u8R"("posturl":"http://www.elta.gr/findapostcode.aspx",)"
520 u8R"("languages":"el")"
521 "}"},
522 {"GS", "{"
523 u8R"("fmt":"%N%n%O%n%A%n%n%C%n%Z",)"
524 u8R"("require":"ACZ",)"
525 u8R"("zipex":"SIQQ 1ZZ")"
526 "}"},
527 {"GT", "{"
528 u8R"("fmt":"%N%n%O%n%A%n%Z- %C",)"
529 u8R"("zipex":"09001,01501",)"
530 u8R"("languages":"es~quc")"
531 "}"},
532 {"GU", "{"
533 u8R"("fmt":"%N%n%O%n%A%n%C %Z",)"
534 u8R"("require":"ACZ",)"
535 u8R"("zip_name_type":"zip",)"
536 u8R"("zipex":"96910,96931",)"
537 u8R"("posturl":"http://zip4.usps.com/zip4/welcome.jsp",)"
538 u8R"("languages":"en~ch")"
539 "}"},
540 {"GW", "{"
541 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
542 u8R"("zipex":"1000,1011",)"
543 u8R"("languages":"pt")"
544 "}"},
545 {"GY", "{"
546 u8R"("languages":"en")"
547 "}"},
548 {"HK", "{"
549 u8R"("fmt":"%S%n%C%n%A%n%O%n%N",)"
550 u8R"("lfmt":"%N%n%O%n%A%n%C%n%S",)"
551 u8R"("require":"AS",)"
552 u8R"("state_name_type":"area",)"
553 u8R"("locality_name_type":"district",)"
554 u8R"("languages":"zh-Hant~en")"
555 "}"},
556 {"HM", "{"
557 u8R"("fmt":"%O%n%N%n%A%n%C %S %Z",)"
558 u8R"("zipex":"7050")"
559 "}"},
560 {"HN", "{"
561 u8R"("fmt":"%N%n%O%n%A%n%C, %S%n%Z",)"
562 u8R"("require":"ACS",)"
563 u8R"("zipex":"31301",)"
564 u8R"("languages":"es")"
565 "}"},
566 {"HR", "{"
567 u8R"("fmt":"%N%n%O%n%A%nHR-%Z %C",)"
568 u8R"("zipex":"10000,21001,10002",)"
569 u8R"("posturl":"http://www.posta.hr/default.aspx?pretpum",)"
570 u8R"("languages":"hr~it")"
571 "}"},
572 {"HT", "{"
573 u8R"("fmt":"%N%n%O%n%A%nHT%Z %C",)"
574 u8R"("zipex":"6120,5310,6110,8510",)"
575 u8R"("languages":"ht~fr")"
576 "}"},
577 {"HU", "{"
578 u8R"("fmt":"%N%n%O%n%C%n%A%n%Z",)"
579 u8R"("require":"ACZ",)"
580 u8R"("zipex":"1037,2380,1540",)"
581 u8R"("posturl":"http://posta.hu/ugyfelszolgalat/iranyitoszam_kereso",)"
582 u8R"("languages":"hu")"
583 "}"},
584 {"ID", "{"
585 u8R"("fmt":"%N%n%O%n%A%n%C%n%S %Z",)"
586 u8R"("require":"AS",)"
587 u8R"("zipex":"40115",)"
588 u8R"("languages":"id")"
589 "}"},
590 {"IE", "{"
591 u8R"("fmt":"%N%n%O%n%A%n%D%n%C%n%S %Z",)"
592 u8R"("zip_name_type":"eircode",)"
593 u8R"("state_name_type":"county",)"
594 u8R"("sublocality_name_type":"townland",)"
595 u8R"("zipex":"A65 F4E2",)"
596 u8R"("posturl":"https://finder.eircode.ie",)"
597 u8R"("languages":"en")"
598 "}"},
599 {"IL", "{"
600 u8R"("fmt":"%N%n%O%n%A%n%C %Z",)"
601 u8R"("zipex":"9614303",)"
602 u8R"("posturl":"http://www.israelpost.co.il/zipcode.nsf/demozip?openform",)"
603 u8R"("languages":"iw~ar")"
604 "}"},
605 {"IM", "{"
606 u8R"("fmt":"%N%n%O%n%A%n%C%n%Z",)"
607 u8R"("require":"ACZ",)"
608 u8R"("zipex":"IM2 1AA,IM99 1PS",)"
609 u8R"("posturl":"https://www.iompost.com/tools-forms/postcode-finder/",)"
610 u8R"("languages":"en~gv")"
611 "}"},
612 {"IN", "{"
613 u8R"("fmt":"%N%n%O%n%A%n%C %Z%n%S",)"
614 u8R"("require":"ACSZ",)"
615 u8R"("zip_name_type":"pin",)"
616 u8R"("state_name_type":"state",)"
617 u8R"("zipex":"110034,110001",)"
618 u8R"("posturl":"https://www.indiapost.gov.in/vas/pages/FindPinCode.aspx",)"
619 u8R"("languages":"en~hi")"
620 "}"},
621 {"IO", "{"
622 u8R"("fmt":"%N%n%O%n%A%n%C%n%Z",)"
623 u8R"("require":"ACZ",)"
624 u8R"("zipex":"BBND 1ZZ",)"
625 u8R"("languages":"en")"
626 "}"},
627 {"IQ", "{"
628 u8R"("fmt":"%O%n%N%n%A%n%C, %S%n%Z",)"
629 u8R"("require":"ACS",)"
630 u8R"("zipex":"31001",)"
631 u8R"("languages":"ar~ckb~az-Arab")"
632 "}"},
633 {"IR", "{"
634 u8R"("fmt":"%O%n%N%n%S%n%C, %D%n%A%n%Z",)"
635 u8R"("sublocality_name_type":"neighborhood",)"
636 u8R"("zipex":"11936-12345",)"
637 u8R"("languages":"fa")"
638 "}"},
639 {"IS", "{"
640 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
641 u8R"("zipex":"320,121,220,110",)"
642 u8R"("posturl":"http://www.postur.is/einstaklingar/posthus/postnumer/",)"
643 u8R"("languages":"is")"
644 "}"},
645 {"IT", "{"
646 u8R"("fmt":"%N%n%O%n%A%n%Z %C %S",)"
647 u8R"("require":"ACSZ",)"
648 u8R"("zipex":"00144,47037,39049",)"
649 u8R"("posturl":"http://www.poste.it/online/cercacap/",)"
650 u8R"("languages":"it")"
651 "}"},
652 {"JE", "{"
653 u8R"("fmt":"%N%n%O%n%A%n%C%nJERSEY%n%Z",)"
654 u8R"("require":"ACZ",)"
655 u8R"("zipex":"JE1 1AA,JE2 2BT",)"
656 u8R"("posturl":"http://www.jerseypost.com/tools/postcode-address-finder/",)"
657 u8R"("languages":"en")"
658 "}"},
659 {"JM", "{"
660 u8R"("fmt":"%N%n%O%n%A%n%C%n%S %X",)"
661 u8R"("require":"ACS",)"
662 u8R"("state_name_type":"parish",)"
663 u8R"("languages":"en")"
664 "}"},
665 {"JO", "{"
666 u8R"("fmt":"%N%n%O%n%A%n%C %Z",)"
667 u8R"("zipex":"11937,11190",)"
668 u8R"("languages":"ar")"
669 "}"},
670 {"JP", "{"
671 u8R"("fmt":"〒%Z%n%S%n%A%n%O%n%N",)"
672 u8R"("lfmt":"%N%n%O%n%A, %S%n%Z",)"
673 u8R"("require":"ASZ",)"
674 u8R"("state_name_type":"prefecture",)"
675 u8R"("zipex":"154-0023,350-1106,951-8073,112-0001,208-0032,231-0012",)"
676 u8R"("posturl":"http://www.post.japanpost.jp/zipcode/",)"
677 u8R"("languages":"ja")"
678 "}"},
679 {"KE", "{"
680 u8R"("fmt":"%N%n%O%n%A%n%C%n%Z",)"
681 u8R"("zipex":"20100,00100",)"
682 u8R"("languages":"sw~en")"
683 "}"},
684 {"KG", "{"
685 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
686 u8R"("zipex":"720001",)"
687 u8R"("languages":"ky~ru")"
688 "}"},
689 {"KH", "{"
690 u8R"("fmt":"%N%n%O%n%A%n%C %Z",)"
691 u8R"("zipex":"12203,14206,12000",)"
692 u8R"("languages":"km")"
693 "}"},
694 {"KI", "{"
695 u8R"("fmt":"%N%n%O%n%A%n%S%n%C",)"
696 u8R"("state_name_type":"island",)"
697 u8R"("languages":"en~gil")"
698 "}"},
699 {"KM", "{"
700 u8R"("languages":"ar~fr~zdj~wni")"
701 "}"},
702 {"KN", "{"
703 u8R"("fmt":"%N%n%O%n%A%n%C, %S",)"
704 u8R"("require":"ACS",)"
705 u8R"("state_name_type":"island",)"
706 u8R"("languages":"en")"
707 "}"},
708 {"KP", "{"
709 u8R"("fmt":"%Z%n%S%n%C%n%A%n%O%n%N",)"
710 u8R"("lfmt":"%N%n%O%n%A%n%C%n%S, %Z",)"
711 u8R"("languages":"ko")"
712 "}"},
713 {"KR", "{"
714 u8R"("fmt":"%S %C%D%n%A%n%O%n%N%n%Z",)"
715 u8R"("lfmt":"%N%n%O%n%A%n%D%n%C%n%S%n%Z",)"
716 u8R"("require":"ACSZ",)"
717 u8R"("state_name_type":"do_si",)"
718 u8R"("sublocality_name_type":"district",)"
719 u8R"("zipex":"03051",)"
720 u8R"("posturl":"http://www.epost.go.kr/search/zipcode/search5.jsp",)"
721 u8R"("languages":"ko")"
722 "}"},
723 {"KW", "{"
724 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
725 u8R"("zipex":"54541,54551,54404,13009",)"
726 u8R"("languages":"ar")"
727 "}"},
728 {"KY", "{"
729 u8R"("fmt":"%N%n%O%n%A%n%S %Z",)"
730 u8R"("require":"AS",)"
731 u8R"("state_name_type":"island",)"
732 u8R"("zipex":"KY1-1100,KY1-1702,KY2-2101",)"
733 u8R"("posturl":"http://www.caymanpost.gov.ky/",)"
734 u8R"("languages":"en")"
735 "}"},
736 {"KZ", "{"
737 u8R"("fmt":"%Z%n%S%n%C%n%A%n%O%n%N",)"
738 u8R"("zipex":"040900,050012",)"
739 u8R"("languages":"ru~kk")"
740 "}"},
741 {"LA", "{"
742 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
743 u8R"("zipex":"01160,01000",)"
744 u8R"("languages":"lo")"
745 "}"},
746 {"LB", "{"
747 u8R"("fmt":"%N%n%O%n%A%n%C %Z",)"
748 u8R"("zipex":"2038 3054,1107 2810,1000",)"
749 u8R"("languages":"ar")"
750 "}"},
751 {"LC", "{"
752 u8R"("languages":"en")"
753 "}"},
754 {"LI", "{"
755 u8R"("fmt":"%O%n%N%n%A%nFL-%Z %C",)"
756 u8R"("require":"ACZ",)"
757 u8R"("zipex":"9496,9491,9490,9485",)"
758 u8R"("posturl":"http://www.post.ch/db/owa/pv_plz_pack/pr_main",)"
759 u8R"("languages":"de~gsw")"
760 "}"},
761 {"LK", "{"
762 u8R"("fmt":"%N%n%O%n%A%n%C%n%Z",)"
763 u8R"("zipex":"20000,00100",)"
764 u8R"("posturl":"http://www.slpost.gov.lk/",)"
765 u8R"("languages":"si~ta")"
766 "}"},
767 {"LR", "{"
768 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
769 u8R"("zipex":"1000",)"
770 u8R"("languages":"en")"
771 "}"},
772 {"LS", "{"
773 u8R"("fmt":"%N%n%O%n%A%n%C %Z",)"
774 u8R"("zipex":"100",)"
775 u8R"("languages":"st~en")"
776 "}"},
777 {"LT", "{"
778 u8R"("fmt":"%O%n%N%n%A%nLT-%Z %C",)"
779 u8R"("require":"ACZ",)"
780 u8R"("zipex":"04340,03500",)"
781 u8R"("posturl":"http://www.post.lt/lt/?id=316",)"
782 u8R"("languages":"lt")"
783 "}"},
784 {"LU", "{"
785 u8R"("fmt":"%O%n%N%n%A%nL-%Z %C",)"
786 u8R"("require":"ACZ",)"
787 u8R"("zipex":"4750,2998",)"
788 u8R"("posturl":"https://www.post.lu/fr/grandes-entreprises/solutions-postales/rechercher-un-code-postal",)"
789 u8R"("languages":"fr~lb~de")"
790 "}"},
791 {"LV", "{"
792 u8R"("fmt":"%N%n%O%n%A%n%C, %Z",)"
793 u8R"("require":"ACZ",)"
794 u8R"("zipex":"LV-1073,LV-1000",)"
795 u8R"("posturl":"http://www.pasts.lv/lv/uzzinas/nodalas/",)"
796 u8R"("languages":"lv")"
797 "}"},
798 {"LY", "{"
799 u8R"("languages":"ar")"
800 "}"},
801 {"MA", "{"
802 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
803 u8R"("zipex":"53000,10000,20050,16052",)"
804 u8R"("languages":"ar~fr~tzm")"
805 "}"},
806 {"MC", "{"
807 u8R"("fmt":"%N%n%O%n%A%nMC-%Z %C %X",)"
808 u8R"("zipex":"98000,98020,98011,98001",)"
809 u8R"("languages":"fr")"
810 "}"},
811 {"MD", "{"
812 u8R"("fmt":"%N%n%O%n%A%nMD-%Z %C",)"
813 u8R"("zipex":"2012,2019",)"
814 u8R"("languages":"ro")"
815 "}"},
816 {"ME", "{"
817 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
818 u8R"("zipex":"81257,81258,81217,84314,85366",)"
819 u8R"("languages":"sr-Latn")"
820 "}"},
821 {"MF", "{"
822 u8R"("fmt":"%O%n%N%n%A%n%Z %C %X",)"
823 u8R"("require":"ACZ",)"
824 u8R"("zipex":"97100",)"
825 u8R"("posturl":"https://www.laposte.fr/particulier/outils/trouver-un-code-postal",)"
826 u8R"("languages":"fr")"
827 "}"},
828 {"MG", "{"
829 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
830 u8R"("zipex":"501,101",)"
831 u8R"("languages":"mg~fr~en")"
832 "}"},
833 {"MH", "{"
834 u8R"("fmt":"%N%n%O%n%A%n%C %S %Z",)"
835 u8R"("require":"ACSZ",)"
836 u8R"("zip_name_type":"zip",)"
837 u8R"("state_name_type":"state",)"
838 u8R"("zipex":"96960,96970",)"
839 u8R"("posturl":"http://zip4.usps.com/zip4/welcome.jsp",)"
840 u8R"("languages":"en~mh")"
841 "}"},
842 {"MK", "{"
843 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
844 u8R"("zipex":"1314,1321,1443,1062",)"
845 u8R"("languages":"mk~sq")"
846 "}"},
847 {"ML", "{"
848 u8R"("languages":"fr")"
849 "}"},
850 {"MM", "{"
851 u8R"("fmt":"%N%n%O%n%A%n%C, %Z",)"
852 u8R"("zipex":"11181",)"
853 u8R"("languages":"my")"
854 "}"},
855 {"MN", "{"
856 u8R"("fmt":"%N%n%O%n%A%n%C%n%S %Z",)"
857 u8R"("zipex":"65030,65270",)"
858 u8R"("posturl":"http://www.zipcode.mn/",)"
859 u8R"("languages":"mn")"
860 "}"},
861 {"MO", "{"
862 u8R"("fmt":"%A%n%O%n%N",)"
863 u8R"("lfmt":"%N%n%O%n%A",)"
864 u8R"("require":"A",)"
865 u8R"("languages":"zh-Hant~pt")"
866 "}"},
867 {"MP", "{"
868 u8R"("fmt":"%N%n%O%n%A%n%C %S %Z",)"
869 u8R"("require":"ACSZ",)"
870 u8R"("zip_name_type":"zip",)"
871 u8R"("state_name_type":"state",)"
872 u8R"("zipex":"96950,96951,96952",)"
873 u8R"("posturl":"http://zip4.usps.com/zip4/welcome.jsp",)"
874 u8R"("languages":"en")"
875 "}"},
876 {"MQ", "{"
877 u8R"("fmt":"%O%n%N%n%A%n%Z %C %X",)"
878 u8R"("require":"ACZ",)"
879 u8R"("zipex":"97220",)"
880 u8R"("posturl":"http://www.laposte.fr/Particulier/Utiliser-nos-outils-pratiques/Outils-et-documents/Trouvez-un-code-postal",)"
881 u8R"("languages":"fr")"
882 "}"},
883 {"MR", "{"
884 u8R"("languages":"ar")"
885 "}"},
886 {"MS", "{"
887 u8R"("languages":"en")"
888 "}"},
889 {"MT", "{"
890 u8R"("fmt":"%N%n%O%n%A%n%C %Z",)"
891 u8R"("zipex":"NXR 01,ZTN 05,GPO 01,BZN 1130,SPB 6031,VCT 1753",)"
892 u8R"("posturl":"https://www.maltapost.com/PostCode/",)"
893 u8R"("languages":"mt~en")"
894 "}"},
895 {"MU", "{"
896 u8R"("fmt":"%N%n%O%n%A%n%Z%n%C",)"
897 u8R"("zipex":"42602",)"
898 u8R"("languages":"en~fr")"
899 "}"},
900 {"MV", "{"
901 u8R"("fmt":"%N%n%O%n%A%n%C %Z",)"
902 u8R"("zipex":"20026",)"
903 u8R"("posturl":"http://www.maldivespost.com/?lid=10",)"
904 u8R"("languages":"dv")"
905 "}"},
906 {"MW", "{"
907 u8R"("fmt":"%N%n%O%n%A%n%C %X",)"
908 u8R"("languages":"en~ny")"
909 "}"},
910 {"MX", "{"
911 u8R"("fmt":"%N%n%O%n%A%n%D%n%Z %C, %S",)"
912 u8R"("require":"ACSZ",)"
913 u8R"("state_name_type":"state",)"
914 u8R"("sublocality_name_type":"neighborhood",)"
915 u8R"("zipex":"02860,77520,06082",)"
916 u8R"("posturl":"https://www.correosdemexico.gob.mx/SSLServicios/ConsultaCP/Descarga.aspx",)"
917 u8R"("languages":"es")"
918 "}"},
919 {"MY", "{"
920 u8R"("fmt":"%N%n%O%n%A%n%D%n%Z %C%n%S",)"
921 u8R"("require":"ACZ",)"
922 u8R"("state_name_type":"state",)"
923 u8R"("sublocality_name_type":"village_township",)"
924 u8R"("zipex":"43000,50754,88990,50670",)"
925 u8R"("posturl":"http://www.pos.com.my",)"
926 u8R"("languages":"ms")"
927 "}"},
928 {"MZ", "{"
929 u8R"("fmt":"%N%n%O%n%A%n%Z %C%S",)"
930 u8R"("zipex":"1102,1119,3212",)"
931 u8R"("languages":"pt")"
932 "}"},
933 {"NA", "{"
934 u8R"("fmt":"%N%n%O%n%A%n%Cn%Z",)"
935 u8R"("zipex":"10001,10017",)"
936 u8R"("languages":"en")"
937 "}"},
938 {"NC", "{"
939 u8R"("fmt":"%O%n%N%n%A%n%Z %C %X",)"
940 u8R"("require":"ACZ",)"
941 u8R"("zipex":"98814,98800,98810",)"
942 u8R"("posturl":"http://poste.opt.nc/index.php?option=com_content&view=article&id=80&Itemid=131",)"
943 u8R"("languages":"fr")"
944 "}"},
945 {"NE", "{"
946 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
947 u8R"("zipex":"8001",)"
948 u8R"("languages":"fr")"
949 "}"},
950 {"NF", "{"
951 u8R"("fmt":"%O%n%N%n%A%n%C %S %Z",)"
952 u8R"("zipex":"2899",)"
953 u8R"("languages":"en")"
954 "}"},
955 {"NG", "{"
956 u8R"("fmt":"%N%n%O%n%A%n%D%n%C %Z%n%S",)"
957 u8R"("state_name_type":"state",)"
958 u8R"("zipex":"930283,300001,931104",)"
959 u8R"("posturl":"http://www.nigeriapostcodes.com/",)"
960 u8R"("languages":"en")"
961 "}"},
962 {"NI", "{"
963 u8R"("fmt":"%N%n%O%n%A%n%Z%n%C, %S",)"
964 u8R"("state_name_type":"department",)"
965 u8R"("zipex":"52000",)"
966 u8R"("posturl":"http://www.correos.gob.ni/index.php/codigo-postal-2",)"
967 u8R"("languages":"es")"
968 "}"},
969 {"NL", "{"
970 u8R"("fmt":"%O%n%N%n%A%n%Z %C",)"
971 u8R"("require":"ACZ",)"
972 u8R"("zipex":"1234 AB,2490 AA",)"
973 u8R"("posturl":"http://www.postnl.nl/voorthuis/",)"
974 u8R"("languages":"nl~fy")"
975 "}"},
976 {"NO", "{"
977 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
978 u8R"("require":"ACZ",)"
979 u8R"("locality_name_type":"post_town",)"
980 u8R"("zipex":"0025,0107,6631",)"
981 u8R"("posturl":"http://adressesok.posten.no/nb/postal_codes/search",)"
982 u8R"("languages":"no~nn~se")"
983 "}"},
984 {"NP", "{"
985 u8R"("fmt":"%N%n%O%n%A%n%C %Z",)"
986 u8R"("zipex":"44601",)"
987 u8R"("posturl":"http://www.gpo.gov.np/Home/Postalcode",)"
988 u8R"("languages":"ne")"
989 "}"},
990 {"NR", "{"
991 u8R"("fmt":"%N%n%O%n%A%n%S",)"
992 u8R"("require":"AS",)"
993 u8R"("state_name_type":"district",)"
994 u8R"("languages":"en")"
995 "}"},
996 {"NU", "{"
997 u8R"("languages":"en~niu")"
998 "}"},
999 {"NZ", "{"
1000 u8R"("fmt":"%N%n%O%n%A%n%D%n%C %Z",)"
1001 u8R"("require":"ACZ",)"
1002 u8R"("zipex":"6001,6015,6332,8252,1030",)"
1003 u8R"("posturl":"http://www.nzpost.co.nz/Cultures/en-NZ/OnlineTools/PostCodeFinder/",)"
1004 u8R"("languages":"en~mi")"
1005 "}"},
1006 {"OM", "{"
1007 u8R"("fmt":"%N%n%O%n%A%n%Z%n%C",)"
1008 u8R"("zipex":"133,112,111",)"
1009 u8R"("languages":"ar")"
1010 "}"},
1011 {"PA", "{"
1012 u8R"("fmt":"%N%n%O%n%A%n%C%n%S",)"
1013 u8R"("languages":"es")"
1014 "}"},
1015 {"PE", "{"
1016 u8R"("fmt":"%N%n%O%n%A%n%C %Z%n%S",)"
1017 u8R"("locality_name_type":"district",)"
1018 u8R"("zipex":"LIMA 23,LIMA 42,CALLAO 2,02001",)"
1019 u8R"("posturl":"http://www.serpost.com.pe/cpostal/codigo",)"
1020 u8R"("languages":"es")"
1021 "}"},
1022 {"PF", "{"
1023 u8R"("fmt":"%N%n%O%n%A%n%Z %C %S",)"
1024 u8R"("require":"ACSZ",)"
1025 u8R"("state_name_type":"island",)"
1026 u8R"("zipex":"98709",)"
1027 u8R"("languages":"fr~ty")"
1028 "}"},
1029 {"PG", "{"
1030 u8R"("fmt":"%N%n%O%n%A%n%C %Z %S",)"
1031 u8R"("require":"ACS",)"
1032 u8R"("zipex":"111",)"
1033 u8R"("languages":"tpi~en~ho")"
1034 "}"},
1035 {"PH", "{"
1036 u8R"("fmt":"%N%n%O%n%A%n%D, %C%n%Z %S",)"
1037 u8R"("zipex":"1008,1050,1135,1207,2000,1000",)"
1038 u8R"("posturl":"http://www.philpost.gov.ph/",)"
1039 u8R"("languages":"en")"
1040 "}"},
1041 {"PK", "{"
1042 u8R"("fmt":"%N%n%O%n%A%n%C-%Z",)"
1043 u8R"("zipex":"44000",)"
1044 u8R"("posturl":"http://www.pakpost.gov.pk/postcode.php",)"
1045 u8R"("languages":"ur~en")"
1046 "}"},
1047 {"PL", "{"
1048 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
1049 u8R"("require":"ACZ",)"
1050 u8R"("zipex":"00-950,05-470,48-300,32-015,00-940",)"
1051 u8R"("posturl":"http://kody.poczta-polska.pl/",)"
1052 u8R"("languages":"pl~de~csb~lt")"
1053 "}"},
1054 {"PM", "{"
1055 u8R"("fmt":"%O%n%N%n%A%n%Z %C %X",)"
1056 u8R"("require":"ACZ",)"
1057 u8R"("zipex":"97500",)"
1058 u8R"("languages":"fr")"
1059 "}"},
1060 {"PN", "{"
1061 u8R"("fmt":"%N%n%O%n%A%n%C%n%Z",)"
1062 u8R"("require":"ACZ",)"
1063 u8R"("zipex":"PCRN 1ZZ",)"
1064 u8R"("languages":"en")"
1065 "}"},
1066 {"PR", "{"
1067 u8R"("fmt":"%N%n%O%n%A%n%C PR %Z",)"
1068 u8R"("require":"ACZ",)"
1069 u8R"("zip_name_type":"zip",)"
1070 u8R"("zipex":"00930",)"
1071 u8R"("posturl":"http://zip4.usps.com/zip4/welcome.jsp",)"
1072 u8R"("languages":"es~en")"
1073 "}"},
1074 {"PS", "{"
1075 u8R"("languages":"ar")"
1076 "}"},
1077 {"PT", "{"
1078 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
1079 u8R"("require":"ACZ",)"
1080 u8R"("zipex":"2725-079,1250-096,1201-950,2860-571,1208-148",)"
1081 u8R"("posturl":"http://www.ctt.pt/feapl_2/app/open/tools.jspx?tool=1",)"
1082 u8R"("languages":"pt")"
1083 "}"},
1084 {"PW", "{"
1085 u8R"("fmt":"%N%n%O%n%A%n%C %S %Z",)"
1086 u8R"("require":"ACSZ",)"
1087 u8R"("zip_name_type":"zip",)"
1088 u8R"("state_name_type":"state",)"
1089 u8R"("zipex":"96940",)"
1090 u8R"("posturl":"http://zip4.usps.com/zip4/welcome.jsp",)"
1091 u8R"("languages":"pau~en")"
1092 "}"},
1093 {"PY", "{"
1094 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
1095 u8R"("zipex":"1536,1538,1209",)"
1096 u8R"("languages":"gn~es")"
1097 "}"},
1098 {"QA", "{"
1099 u8R"("languages":"ar")"
1100 "}"},
1101 {"RE", "{"
1102 u8R"("fmt":"%O%n%N%n%A%n%Z %C %X",)"
1103 u8R"("require":"ACZ",)"
1104 u8R"("zipex":"97400",)"
1105 u8R"("posturl":"http://www.laposte.fr/Particulier/Utiliser-nos-outils-pratiques/Outils-et-documents/Trouvez-un-code-postal",)"
1106 u8R"("languages":"fr")"
1107 "}"},
1108 {"RO", "{"
1109 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
1110 u8R"("require":"ACZ",)"
1111 u8R"("zipex":"060274,061357,200716",)"
1112 u8R"("posturl":"http://www.posta-romana.ro/zip_codes",)"
1113 u8R"("languages":"ro")"
1114 "}"},
1115 {"RS", "{"
1116 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
1117 u8R"("zipex":"106314",)"
1118 u8R"("posturl":"http://www.posta.rs/struktura/lat/aplikacije/pronadji/nadji-postu.asp",)"
1119 u8R"("languages":"sr~sr-Latn~hu~ro~hr~sk~uk")"
1120 "}"},
1121 {"RU", "{"
1122 u8R"("fmt":"%N%n%O%n%A%n%C%n%S%n%Z",)"
1123 u8R"("lfmt":"%N%n%O%n%A%n%C%n%S%n%Z",)"
1124 u8R"("require":"ACSZ",)"
1125 u8R"("state_name_type":"oblast",)"
1126 u8R"("zipex":"247112,103375,188300",)"
1127 u8R"("posturl":"https://www.pochta.ru/post-index",)"
1128 u8R"("languages":"ru")"
1129 "}"},
1130 {"RW", "{"
1131 u8R"("languages":"rw~en~fr")"
1132 "}"},
1133 {"SA", "{"
1134 u8R"("fmt":"%N%n%O%n%A%n%C %Z",)"
1135 u8R"("zipex":"11564,11187,11142",)"
1136 u8R"("languages":"ar")"
1137 "}"},
1138 {"SB", "{"
1139 u8R"("languages":"en")"
1140 "}"},
1141 {"SC", "{"
1142 u8R"("fmt":"%N%n%O%n%A%n%C%n%S",)"
1143 u8R"("state_name_type":"island",)"
1144 u8R"("languages":"fr~en")"
1145 "}"},
1146 {"SD", "{"
1147 u8R"("fmt":"%N%n%O%n%A%n%C%n%Z",)"
1148 u8R"("locality_name_type":"district",)"
1149 u8R"("zipex":"11042,11113",)"
1150 u8R"("languages":"ar~en")"
1151 "}"},
1152 {"SE", "{"
1153 u8R"("fmt":"%O%n%N%n%A%nSE-%Z %C",)"
1154 u8R"("require":"ACZ",)"
1155 u8R"("locality_name_type":"post_town",)"
1156 u8R"("zipex":"11455,12345,10500",)"
1157 u8R"("posturl":"https://www.postnord.se/online-verktyg/verktyg/sok/sok-postnummer-och-adress",)"
1158 u8R"("languages":"sv~fi")"
1159 "}"},
1160 {"SG", "{"
1161 u8R"("fmt":"%N%n%O%n%A%nSINGAPORE %Z",)"
1162 u8R"("require":"AZ",)"
1163 u8R"("zipex":"546080,308125,408600",)"
1164 u8R"("posturl":"https://www.singpost.com/find-postal-code",)"
1165 u8R"("languages":"en~zh~ms~ta")"
1166 "}"},
1167 {"SH", "{"
1168 u8R"("fmt":"%N%n%O%n%A%n%C%n%Z",)"
1169 u8R"("require":"ACZ",)"
1170 u8R"("zipex":"STHL 1ZZ",)"
1171 u8R"("languages":"en")"
1172 "}"},
1173 {"SI", "{"
1174 u8R"("fmt":"%N%n%O%n%A%nSI-%Z %C",)"
1175 u8R"("zipex":"4000,1001,2500",)"
1176 u8R"("languages":"sl")"
1177 "}"},
1178 {"SJ", "{"
1179 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
1180 u8R"("require":"ACZ",)"
1181 u8R"("locality_name_type":"post_town",)"
1182 u8R"("zipex":"9170",)"
1183 u8R"("posturl":"http://epab.posten.no/",)"
1184 u8R"("languages":"no")"
1185 "}"},
1186 {"SK", "{"
1187 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
1188 u8R"("require":"ACZ",)"
1189 u8R"("zipex":"010 01,023 14,972 48,921 01,975 99",)"
1190 u8R"("posturl":"http://psc.posta.sk",)"
1191 u8R"("languages":"sk")"
1192 "}"},
1193 {"SL", "{"
1194 u8R"("languages":"en")"
1195 "}"},
1196 {"SM", "{"
1197 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
1198 u8R"("require":"AZ",)"
1199 u8R"("zipex":"47890,47891,47895,47899",)"
1200 u8R"("posturl":"http://www.poste.it/online/cercacap/",)"
1201 u8R"("languages":"it")"
1202 "}"},
1203 {"SN", "{"
1204 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
1205 u8R"("zipex":"12500,46024,16556,10000",)"
1206 u8R"("languages":"wo~fr~ff~srr~dyo~sav~mfv~bjt~snf~knf~bsc~mey~tnr")"
1207 "}"},
1208 {"SO", "{"
1209 u8R"("fmt":"%N%n%O%n%A%n%C, %S %Z",)"
1210 u8R"("require":"ACS",)"
1211 u8R"("zipex":"JH 09010,AD 11010",)"
1212 u8R"("languages":"so")"
1213 "}"},
1214 {"SR", "{"
1215 u8R"("fmt":"%N%n%O%n%A%n%C%n%S",)"
1216 u8R"("languages":"nl")"
1217 "}"},
1218 {"SS", "{"
1219 u8R"("languages":"en")"
1220 "}"},
1221 {"ST", "{"
1222 u8R"("languages":"pt")"
1223 "}"},
1224 {"SV", "{"
1225 u8R"("fmt":"%N%n%O%n%A%n%Z-%C%n%S",)"
1226 u8R"("require":"ACS",)"
1227 u8R"("zipex":"CP 1101",)"
1228 u8R"("languages":"es")"
1229 "}"},
1230 {"SX", "{"
1231 u8R"("languages":"en~nl")"
1232 "}"},
1233 {"SY", "{"
1234 u8R"("locality_name_type":"district",)"
1235 u8R"("languages":"ar~fr")"
1236 "}"},
1237 {"SZ", "{"
1238 u8R"("fmt":"%N%n%O%n%A%n%C%n%Z",)"
1239 u8R"("zipex":"H100",)"
1240 u8R"("posturl":"http://www.sptc.co.sz/swazipost/codes/index.php",)"
1241 u8R"("languages":"en~ss")"
1242 "}"},
1243 {"TA", "{"
1244 u8R"("fmt":"%N%n%O%n%A%n%C%n%Z",)"
1245 u8R"("zipex":"TDCU 1ZZ",)"
1246 u8R"("languages":"en")"
1247 "}"},
1248 {"TC", "{"
1249 u8R"("fmt":"%N%n%O%n%A%n%C%n%Z",)"
1250 u8R"("require":"ACZ",)"
1251 u8R"("zipex":"TKCA 1ZZ",)"
1252 u8R"("languages":"en")"
1253 "}"},
1254 {"TD", "{"
1255 u8R"("languages":"fr~ar")"
1256 "}"},
1257 {"TF", "{"
1258 u8R"("languages":"fr")"
1259 "}"},
1260 {"TG", "{"
1261 u8R"("languages":"fr")"
1262 "}"},
1263 {"TH", "{"
1264 u8R"("fmt":"%N%n%O%n%A%n%D %C%n%S %Z",)"
1265 u8R"("lfmt":"%N%n%O%n%A%n%D, %C%n%S %Z",)"
1266 u8R"("zipex":"10150,10210",)"
1267 u8R"("languages":"th")"
1268 "}"},
1269 {"TJ", "{"
1270 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
1271 u8R"("zipex":"735450,734025",)"
1272 u8R"("languages":"tg")"
1273 "}"},
1274 {"TK", "{"
1275 u8R"("languages":"en~tkl")"
1276 "}"},
1277 {"TL", "{"
1278 u8R"("languages":"pt~tet")"
1279 "}"},
1280 {"TM", "{"
1281 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
1282 u8R"("zipex":"744000",)"
1283 u8R"("languages":"tk")"
1284 "}"},
1285 {"TN", "{"
1286 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
1287 u8R"("zipex":"1002,8129,3100,1030",)"
1288 u8R"("posturl":"http://www.poste.tn/codes.php",)"
1289 u8R"("languages":"ar~fr")"
1290 "}"},
1291 {"TO", "{"
1292 u8R"("languages":"to~en")"
1293 "}"},
1294 {"TR", "{"
1295 u8R"("fmt":"%N%n%O%n%A%n%Z %C/%S",)"
1296 u8R"("require":"ACZ",)"
1297 u8R"("locality_name_type":"district",)"
1298 u8R"("zipex":"01960,06101",)"
1299 u8R"("posturl":"http://postakodu.ptt.gov.tr/",)"
1300 u8R"("languages":"tr")"
1301 "}"},
1302 {"TT", "{"
1303 u8R"("languages":"en")"
1304 "}"},
1305 {"TV", "{"
1306 u8R"("fmt":"%N%n%O%n%A%n%C%n%S",)"
1307 u8R"("state_name_type":"island",)"
1308 u8R"("languages":"tyv")"
1309 "}"},
1310 {"TW", "{"
1311 u8R"("fmt":"%Z%n%S%C%n%A%n%O%n%N",)"
1312 u8R"("lfmt":"%N%n%O%n%A%n%C, %S %Z",)"
1313 u8R"("require":"ACSZ",)"
1314 u8R"("state_name_type":"county",)"
1315 u8R"("zipex":"104,106,10603,40867",)"
1316 u8R"("posturl":"http://www.post.gov.tw/post/internet/f_searchzone/index.jsp?ID=190102",)"
1317 u8R"("languages":"zh-Hant")"
1318 "}"},
1319 {"TZ", "{"
1320 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
1321 u8R"("zipex":"6090,34413",)"
1322 u8R"("languages":"sw~en")"
1323 "}"},
1324 {"UA", "{"
1325 u8R"("fmt":"%N%n%O%n%A%n%C%n%S%n%Z",)"
1326 u8R"("lfmt":"%N%n%O%n%A%n%C%n%S%n%Z",)"
1327 u8R"("require":"ACSZ",)"
1328 u8R"("state_name_type":"oblast",)"
1329 u8R"("zipex":"15432,01055,01001",)"
1330 u8R"("posturl":"http://services.ukrposhta.com/postindex_new/",)"
1331 u8R"("languages":"uk")"
1332 "}"},
1333 {"UG", "{"
1334 u8R"("languages":"sw~en")"
1335 "}"},
1336 {"UM", "{"
1337 u8R"("fmt":"%N%n%O%n%A%n%C %S %Z",)"
1338 u8R"("require":"ACS",)"
1339 u8R"("zip_name_type":"zip",)"
1340 u8R"("state_name_type":"state",)"
1341 u8R"("zipex":"96898",)"
1342 u8R"("posturl":"http://zip4.usps.com/zip4/welcome.jsp",)"
1343 u8R"("languages":"en")"
1344 "}"},
1345 {"US", "{"
1346 u8R"("fmt":"%N%n%O%n%A%n%C, %S %Z",)"
1347 u8R"("require":"ACSZ",)"
1348 u8R"("zip_name_type":"zip",)"
1349 u8R"("state_name_type":"state",)"
1350 u8R"("zipex":"95014,22162-1010",)"
1351 u8R"("posturl":"https://tools.usps.com/go/ZipLookupAction!input.action",)"
1352 u8R"("languages":"en")"
1353 "}"},
1354 {"UY", "{"
1355 u8R"("fmt":"%N%n%O%n%A%n%Z %C %S",)"
1356 u8R"("zipex":"11600",)"
1357 u8R"("posturl":"http://www.correo.com.uy/index.asp?codPag=codPost&switchMapa=codPost",)"
1358 u8R"("languages":"es")"
1359 "}"},
1360 {"UZ", "{"
1361 u8R"("fmt":"%N%n%O%n%A%n%Z %C%n%S",)"
1362 u8R"("zipex":"702100,700000",)"
1363 u8R"("posturl":"http://www.pochta.uz/ru/uslugi/indexsearch.html",)"
1364 u8R"("languages":"uz~uz-Cyrl")"
1365 "}"},
1366 {"VA", "{"
1367 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
1368 u8R"("zipex":"00120",)"
1369 u8R"("languages":"it")"
1370 "}"},
1371 {"VC", "{"
1372 u8R"("fmt":"%N%n%O%n%A%n%C %Z",)"
1373 u8R"("zipex":"VC0100,VC0110,VC0400",)"
1374 u8R"("posturl":"http://www.svgpost.gov.vc/?option=com_content&view=article&id=3&Itemid=16",)"
1375 u8R"("languages":"en")"
1376 "}"},
1377 {"VE", "{"
1378 u8R"("fmt":"%N%n%O%n%A%n%C %Z, %S",)"
1379 u8R"("require":"ACS",)"
1380 u8R"("state_name_type":"state",)"
1381 u8R"("zipex":"1010,3001,8011,1020",)"
1382 u8R"("posturl":"http://postcode.vnpost.vn/services/search.aspx",)"
1383 u8R"("languages":"es")"
1384 "}"},
1385 {"VG", "{"
1386 u8R"("fmt":"%N%n%O%n%A%n%C%n%Z",)"
1387 u8R"("require":"A",)"
1388 u8R"("zipex":"VG1110,VG1150,VG1160",)"
1389 u8R"("languages":"en")"
1390 "}"},
1391 {"VI", "{"
1392 u8R"("fmt":"%N%n%O%n%A%n%C %S %Z",)"
1393 u8R"("require":"ACSZ",)"
1394 u8R"("zip_name_type":"zip",)"
1395 u8R"("state_name_type":"state",)"
1396 u8R"("zipex":"00802-1222,00850-9802",)"
1397 u8R"("posturl":"http://zip4.usps.com/zip4/welcome.jsp",)"
1398 u8R"("languages":"en")"
1399 "}"},
1400 {"VN", "{"
1401 u8R"("fmt":"%N%n%O%n%A%n%C%n%S %Z",)"
1402 u8R"("lfmt":"%N%n%O%n%A%n%C%n%S %Z",)"
1403 u8R"("zipex":"70010,55999",)"
1404 u8R"("posturl":"http://postcode.vnpost.vn/services/search.aspx",)"
1405 u8R"("languages":"vi")"
1406 "}"},
1407 {"VU", "{"
1408 u8R"("languages":"bi~en~fr")"
1409 "}"},
1410 {"WF", "{"
1411 u8R"("fmt":"%O%n%N%n%A%n%Z %C %X",)"
1412 u8R"("require":"ACZ",)"
1413 u8R"("zipex":"98600",)"
1414 u8R"("languages":"fr")"
1415 "}"},
1416 {"WS", "{"
1417 u8R"("languages":"sm~en")"
1418 "}"},
1419 {"XK", "{"
1420 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
1421 u8R"("zipex":"10000",)"
1422 u8R"("languages":"sq~sr~sr-Latn")"
1423 "}"},
1424 {"YE", "{"
1425 u8R"("languages":"ar")"
1426 "}"},
1427 {"YT", "{"
1428 u8R"("fmt":"%O%n%N%n%A%n%Z %C %X",)"
1429 u8R"("require":"ACZ",)"
1430 u8R"("zipex":"97600",)"
1431 u8R"("languages":"fr")"
1432 "}"},
1433 {"ZA", "{"
1434 u8R"("fmt":"%N%n%O%n%A%n%D%n%C%n%Z",)"
1435 u8R"("require":"ACZ",)"
1436 u8R"("zipex":"0083,1451,0001",)"
1437 u8R"("posturl":"https://www.postoffice.co.za/Questions/postalcode.html",)"
1438 u8R"("languages":"en~zu~xh~af~nso~tn~st~ts~ss~ve~nr")"
1439 "}"},
1440 {"ZM", "{"
1441 u8R"("fmt":"%N%n%O%n%A%n%Z %C",)"
1442 u8R"("zipex":"50100,50101",)"
1443 u8R"("languages":"en")"
1444 "}"},
1445 {"ZW", "{"
1446 u8R"("languages":"sn~en~nd")"
1447 "}"},
1448 };
1449
1450 } // namespace
1451
1452 // static
GetDefaultRegionData()1453 const std::string& RegionDataConstants::GetDefaultRegionData() {
1454 static const std::string kDefaultRegionData(
1455 "{"
1456 u8R"("fmt":"%N%n%O%n%A%n%C",)"
1457 u8R"("require":"AC",)"
1458 u8R"("zip_name_type":"postal",)"
1459 u8R"("state_name_type":"province",)"
1460 u8R"("locality_name_type":"city",)"
1461 u8R"("sublocality_name_type":"suburb")"
1462 "}");
1463 return kDefaultRegionData;
1464 }
1465
1466 namespace {
1467
1468 // Binary search over kRegionData[i].region_code values. If a match is found,
1469 // returns true and sets |position_out| to the position of |region_code| in
1470 // kRegionData. If a match is not found, returns false.
FindPositionOfRegionCode(const std::string & region_code,size_t * position_out)1471 bool FindPositionOfRegionCode(const std::string& region_code,
1472 size_t* position_out) {
1473 assert(position_out != nullptr);
1474 size_t left = 0; // inclusive.
1475 size_t right = size(kRegionData); // exclusive.
1476 while (left < right) {
1477 size_t mid = left + (right - left) / 2;
1478 int comparison = region_code.compare(kRegionData[mid].region_code);
1479 if (comparison == 0) {
1480 *position_out = mid;
1481 return true;
1482 } else if (comparison > 0) {
1483 left = mid + 1;
1484 } else {
1485 right = mid;
1486 }
1487 }
1488 return false;
1489 }
1490
InitRegionCodes()1491 std::vector<std::string> InitRegionCodes() {
1492 std::vector<std::string> region_codes(size(kRegionData));
1493 std::transform(std::begin(kRegionData),
1494 std::end(kRegionData),
1495 region_codes.begin(),
1496 [](const RegionData& region_data) {
1497 return region_data.region_code;
1498 });
1499 return region_codes;
1500 }
1501
InitMaxLookupKeyDepth()1502 const std::map<std::string, size_t> InitMaxLookupKeyDepth() {
1503 std::map<std::string, size_t> max_depth;
1504 for (const auto& region_data : kRegionData) {
1505 std::vector<FormatElement> fields;
1506 // Here region_data.data actually contains the entire JSON blob for this
1507 // region, and not only the format field, but it doesn't really matter when
1508 // just checking whether a particular formatting code (eg. "%C") is present,
1509 // as there isn't anything else in the JSON that erroneously could match a
1510 // formatting code.
1511 ParseFormatRule(region_data.data, &fields);
1512 size_t depth = 1;
1513 for (; depth < size(LookupKey::kHierarchy); ++depth) {
1514 AddressField field = LookupKey::kHierarchy[depth];
1515 // Check to see if a particular field in the hierarchy is used by
1516 // addresses in this country. If not, the maximum depth has been reached.
1517 if (std::find(fields.begin(), fields.end(), FormatElement(field)) ==
1518 fields.end()) {
1519 break;
1520 }
1521 }
1522 max_depth.emplace(region_data.region_code, depth - 1);
1523 }
1524 return max_depth;
1525 }
1526
1527 } // namespace
1528
1529 // static
IsSupported(const std::string & region_code)1530 bool RegionDataConstants::IsSupported(const std::string& region_code) {
1531 size_t unused;
1532 return FindPositionOfRegionCode(region_code, &unused);
1533 }
1534
1535 // static
GetRegionCodes()1536 const std::vector<std::string>& RegionDataConstants::GetRegionCodes() {
1537 static const std::vector<std::string> kRegionCodes(InitRegionCodes());
1538 return kRegionCodes;
1539 }
1540
1541 // static
GetRegionData(const std::string & region_code)1542 std::string RegionDataConstants::GetRegionData(
1543 const std::string& region_code) {
1544 static const std::string kEmptyString;
1545 size_t position;
1546 bool found = FindPositionOfRegionCode(region_code, &position);
1547 return found ? kRegionData[position].data : kEmptyString;
1548 }
1549
1550 // static
GetMaxLookupKeyDepth(const std::string & region_code)1551 size_t RegionDataConstants::GetMaxLookupKeyDepth(
1552 const std::string& region_code) {
1553 static const std::map<std::string, size_t> kMaxDepth(InitMaxLookupKeyDepth());
1554 auto it = kMaxDepth.find(region_code);
1555 return it != kMaxDepth.end() ? it->second : 0;
1556 }
1557
1558 } // namespace addressinput
1559 } // namespace i18n
1560