diff options
Diffstat (limited to 'plugins/GeoIp2/data/regionMapping.php')
-rw-r--r-- | plugins/GeoIp2/data/regionMapping.php | 4635 |
1 files changed, 4635 insertions, 0 deletions
diff --git a/plugins/GeoIp2/data/regionMapping.php b/plugins/GeoIp2/data/regionMapping.php new file mode 100644 index 0000000000..92d10ce356 --- /dev/null +++ b/plugins/GeoIp2/data/regionMapping.php @@ -0,0 +1,4635 @@ +<?php + +return [ + 'AD' => [ + '02' => '02', + '03' => '03', + '04' => '04', + '05' => '05', + '06' => '06', + '07' => '07', + '08' => '08', + ], + 'AE' => [ + '01' => 'AZ', + '02' => 'AJ', + '03' => 'DU', + '04' => 'FU', + '05' => 'RK', + '06' => 'SH', + '07' => 'UQ', + ], + 'AF' => [ + '01' => 'BDS', // Badakhshan + '02' => 'BDG', // Badghis + '03' => 'BGL', // Baghlan + '05' => 'BAM', // Bamian + '06' => 'FRA', // Farah + '07' => 'FYB', // Faryab + '08' => 'GHA', // Ghazni + '09' => 'GHO', // Ghowr + '10' => 'HEL', // Helmand + '11' => 'HER', // Herat + '13' => 'KAB', // Kabol + '14' => 'KAP', // Kapisa + '17' => 'LOG', // Lowgar + '18' => 'NAN', // Nangarhar + '19' => 'NIM', // Nimruz + '23' => 'KAN', // Kandahar + '24' => 'KDZ', // Kondoz + '26' => 'TAK', // Takhar + '27' => 'WAR', // Vardak + '28' => 'ZAB', // Zabol + '29' => 'PKA', // Paktika + '30' => 'BAL', // Balkh + '31' => 'JOW', // Jowzjan + '32' => 'SAM', // Samangan + '33' => 'SAR', // Sar-e Pol + '34' => 'KNR', // Konar + '35' => 'LAG', // Laghman + '36' => 'PIA', // Paktia + '37' => 'KHO', // Khowst + '38' => 'NUR', // Nurestan + '39' => 'URU', // Oruzgan + '40' => 'PAR', // Parvan + '41' => 'DAY', // Daykondi + '42' => 'PAN', // Panjshir + ], + 'AG' => [ + '01' => '10', + '03' => '03', + '04' => '04', + '05' => '05', + '06' => '06', + '07' => '07', + '08' => '08', + '09' => '11', + ], + 'AL' => [ + '40' => '01', + '41' => '09', + '42' => '02', + '43' => '03', + '44' => '04', + '45' => '05', + '46' => '06', + '47' => '07', + '48' => '08', + '49' => '10', + '50' => '11', + '51' => '12', + ], + 'AM' => [ + '01' => 'AG', + '02' => 'AR', + '03' => 'AV', + '04' => 'GR', + '05' => 'KT', + '06' => 'LO', + '07' => 'SH', + '08' => 'SU', + '09' => 'TV', + '10' => 'VD', + '11' => 'ER', + ], + 'AO' => [ + '01' => 'BGU', + '02' => 'BIE', + '03' => 'CAB', + '04' => 'CCU', + '05' => 'CNO', + '06' => 'CUS', + '07' => 'CNN', + '08' => 'HUA', + '09' => 'HUI', + '12' => 'MAL', + '13' => 'NAM', + '14' => 'MOX', + '15' => 'UIG', + '16' => 'ZAI', + '17' => 'LNO', + '18' => 'LSU', + '19' => 'BGO', + '20' => 'LUA', + ], + 'AR' => [ + '01' => 'B', + '02' => 'K', + '03' => 'H', + '04' => 'U', + '05' => 'X', + '06' => 'W', + '07' => 'C', + '08' => 'E', + '09' => 'P', + '10' => 'Y', + '11' => 'L', + '12' => 'F', + '13' => 'M', + '14' => 'N', + '15' => 'Q', + '16' => 'R', + '17' => 'A', + '18' => 'J', + '19' => 'D', + '20' => 'Z', + '21' => 'S', + '22' => 'G', + '23' => 'V', + '24' => 'T', + ], + 'AT' => [ + '01' => '1', + '02' => '2', + '03' => '3', + '04' => '4', + '05' => '5', + '06' => '6', + '07' => '7', + '08' => '8', + '09' => '9', + ], + 'AU' => [ + '01' => 'ACT', + '02' => 'NSW', + '03' => 'NT', + '04' => 'QLD', + '05' => 'SA', + '06' => 'TAS', + '07' => 'VIC', + '08' => 'WA', + ], + 'AZ' => [ + '01' => 'ABS', // Abseron + '02' => 'AGC', // Agcabadi + '03' => 'AGM', // Agdam + '04' => 'AGS', // Agdas + '05' => 'AGA', // Agstafa + '06' => 'AGU', // Agsu + '07' => '', // Ali Bayramli + '08' => 'AST', // Astara + '09' => 'BA', // Baki + '10' => 'BAL', // Balakan + '11' => 'BAR', // Barda + '12' => 'BEY', // Beylaqan + '13' => 'BIL', // Bilasuvar + '14' => 'CAB', // Cabrayil + '15' => 'CAL', // Calilabad + '16' => 'DAS', // Daskasan + '17' => '', // Davaci + '18' => 'FUZ', // Fuzuli + '19' => 'GAD', // Gadabay + '20' => 'GA', // Ganca + '21' => 'GOR', // Goranboy + '22' => 'GOY', // Goycay + '23' => 'HAC', // Haciqabul + '24' => 'IMI', // Imisli + '25' => 'ISM', // Ismayilli + '26' => 'KAL', // Kalbacar + '27' => 'KUR', // Kurdamir + '28' => 'LAC', // Lacin + '29' => 'LAN', // Lankaran + '30' => 'LA', // Lankaran city + '31' => 'LER', // Lerik + '32' => 'MAS', // Masalli + '33' => 'MI', // Mingacevir + '34' => 'NA', // Naftalan + '35' => 'NV', // Naxcivan + '36' => 'NEF', // Neftcala + '37' => 'OGU', // Oguz + '38' => 'QAB', // Qabala + '39' => 'QAX', // Qax + '40' => 'QAZ', // Qazax + '41' => 'QOB', // Qobustan + '42' => 'QBA', // Quba + '43' => 'QBI', // Qubadli + '44' => 'QUS', // Qusar + '45' => 'SAT', // Saatli + '46' => 'SAB', // Sabirabad + '47' => 'SAK', // Saki + '48' => 'SA', // Saki + '49' => 'SAL', // Salyan + '50' => 'SMI', // Samaxi + '51' => 'SKR', // Samkir + '52' => 'SMX', // Samux + '53' => 'SIY', // Siyazan + '54' => 'SM', // Sumqayit + '55' => 'SUS', // Susa + '56' => 'SUS', // Susa City Şuşa used to have SS, but was deleted in 2011. See https://en.wikipedia.org/wiki/ISO_3166-2:AZ#Changes. Now maps to region Şuşa [SUS] + '57' => 'TAR', // Tartar + '58' => 'TOV', // Tovuz + '59' => 'UCA', // Ucar + '60' => 'XAC', // Xacmaz + '61' => 'XA', // Xankandi + '62' => 'GYG', // Xanlar + '63' => 'XIZ', // Xizi + '64' => 'XCI', // Xocali + '65' => 'XVD', // Xocavand + '66' => 'YAR', // Yardimli + '67' => 'YEV', // Yevlax + '68' => 'YE', // Yevlax + '69' => 'ZAN', // Zangilan + '70' => 'ZAQ', // Zaqatala + '71' => 'ZAR', // Zardab + ], + 'BA' => [ + '01' => 'BIH', + '02' => 'SRP', + + // invalid codes [used by maxmind] + '03' => 'BRC' // Brčko distrikt was added in 2010. See https://en.wikipedia.org/wiki/ISO_3166-2:BA#Changes + ], + 'BB' => [ + '01' => '01', + '02' => '02', + '03' => '03', + '04' => '04', + '05' => '05', + '06' => '06', + '07' => '07', + '08' => '08', + '09' => '09', + '10' => '10', + '11' => '11', + ], + 'BD' => [ + '81' => 'C', + '82' => 'D', + '83' => 'E', + '84' => 'B', + '85' => 'A', + '86' => 'G', + + // invalid codes [used by maxmind] + '87' => 'F' // Rangpur added in 2011. See https://en.wikipedia.org/wiki/ISO_3166-2:BD#Changes + ], + 'BE' => [ + '01' => 'VAN', + '03' => 'WHT', + '04' => 'WLG', + '05' => 'VLI', + '06' => 'WLX', + '07' => 'WNA', + '08' => 'VOV', + '09' => 'VWV', + '10' => 'WBR', + '11' => 'BRU', + '12' => 'VBR', + + // Conventional FIPS codes that are not listed on wikidata + '13' => 'VLG', // Flanders + '14' => 'WAL' // Wallonia + ], + 'BF' => [ + '15' => 'BAM', // Bam + '19' => 'BLK', // Boulkiemde + '20' => 'GAN', // Ganzourgou + '21' => 'GNA', // Gnagna + '28' => 'KOT', // Kouritenga + '33' => 'OUD', // Oudalan + '34' => 'PAS', // Passore + '36' => 'SNG', // Sanguie + '40' => 'SOM', // Soum + '42' => 'TAP', // Tapoa + '44' => 'ZOU', // Zoundweogo + '45' => 'BAL', // Bale + '46' => 'BAN', // Banwa + '47' => 'BAZ', // Bazega + '48' => 'BGR', // Bougouriba + '49' => 'BLG', // Boulgou + '50' => 'GOU', // Gourma + '51' => 'HOU', // Houet + '52' => 'IOB', // Ioba + '53' => 'KAD', // Kadiogo + '54' => 'KEN', // Kenedougou + '55' => 'COM', // Komoe + '56' => 'KMD', // Komondjari + '57' => 'KMP', // Kompienga + '58' => 'KOS', // Kossi + '59' => 'KOP', // Koulpelogo + '60' => 'KOW', // Kourweogo + '61' => 'LER', // Leraba + '62' => 'LOR', // Loroum + '63' => 'MOU', // Mouhoun + '64' => 'NAM', // Namentenga + '65' => 'NAO', // Naouri + '66' => 'NAY', // Nayala + '67' => 'NOU', // Noumbiel + '68' => 'OUB', // Oubritenga + '69' => 'PON', // Poni + '70' => 'SMT', // Sanmatenga + '71' => 'SEN', // Seno + '72' => 'SIS', // Sissili + '73' => 'SOR', // Sourou + '74' => 'TUI', // Tuy + '75' => 'YAG', // Yagha + '76' => 'YAT', // Yatenga + '77' => 'ZIR', // Ziro + '78' => 'ZON', // Zondoma + ], + 'BG' => [ + '38' => '01', + '39' => '02', + '40' => '08', + '41' => '07', + '42' => '23', + '43' => '26', + '44' => '09', + '45' => '10', + '46' => '11', + '47' => '12', + '48' => '13', + '49' => '14', + '50' => '15', + '51' => '16', + '52' => '17', + '53' => '18', + '54' => '27', + '55' => '19', + '56' => '20', + '57' => '21', + '58' => '23', + '59' => '24', + '60' => '25', + '61' => '03', + '62' => '04', + '63' => '05', + '64' => '06', + '65' => '28', + + // Mikhaylovgrad seems to be a city in the region Montana + '33' => '12' + ], + 'BH' => [ + '01' => '15', // Al Hadd => Muharraq Governorate (https://en.wikipedia.org/wiki/Al_Hidd) + '02' => '13', // Al Manamah => Capital Governorate (https://en.wikipedia.org/wiki/Manama) + '05' => '', // Jidd Hafs => Capital and Northern Governorate 13/17 (https://en.wikipedia.org/wiki/Jidhafs) + '06' => '', // Sitrah => Capital and Southern Governorate 13/14 (https://en.wikipedia.org/wiki/Sitra) + '08' => '', // Al Mintaqah al Gharbiyah => Northern and Southern Governorate 17/14 (https://en.wikipedia.org/wiki/Western_Region,_Bahrain) + '09' => '14', // Mintaqat Juzur Hawar => Southern Governorate (https://en.wikipedia.org/wiki/Hawar_Islands) + '10' => '17', // Al Mintaqah ash Shamaliyah => Northern Governorate (https://en.wikipedia.org/wiki/Northern_Region,_Bahrain) + '11' => '', // Al Mintaqah al Wusta => Capital and Northern Governorates 13/17 (https://en.wikipedia.org/wiki/Central_Region,_Bahrain) + '12' => '14', // Madīnat ٰĪsá => seems to be Southern Governorate based on the maps shown on wikipedia (https://en.wikipedia.org/wiki/Isa_Town) + '13' => '14', // Ar Rifa => Southern Governorates (https://en.wikipedia.org/wiki/Rifa_and_Southern_Region,_Bahrain) + '14' => '17', // Madinat Hamad => Northern Governorate (https://en.wikipedia.org/wiki/Hamad_Town) + '15' => '15', + '16' => '13', + '17' => '14', + '18' => '17', + '19' => '', // seems to be Southern and Northern Governorate 14/17 based on the maps shown on wikipedia (https://en.wikipedia.org/wiki/Isa_Town) + ], + 'BI' => [ + '02' => '', // Bujumbura was splitted into Bujumbura Mairie (BM) and Bujumbura Rural (BL) in 2010 + '09' => 'BB', + '10' => 'BR', + '11' => 'CA', + '12' => 'CI', + '13' => 'GI', + '14' => 'KR', + '15' => 'KY', + '16' => 'KI', + '17' => 'MA', + '18' => 'MY', + '19' => 'NG', + '20' => 'RT', + '21' => 'RY', + '22' => 'MU', + '23' => 'MW', + ], + 'BJ' => [ + '07' => 'AL', + '08' => 'AK', + '09' => 'AQ', + '10' => 'BO', + '11' => 'CO', + '12' => 'KO', + '13' => 'DO', + '14' => 'LI', + '15' => 'MO', + '16' => 'OU', + '17' => 'PL', + '18' => 'ZO', + ], + 'BM' => [ + // ISO 3166-2 does not define any subdivisions of Bermuda, so simply remove them (https://en.wikipedia.org/wiki/ISO_3166-2:BM) + '01' => '', + '02' => '', + '03' => '', + '04' => '', + '05' => '', + '06' => '', + '07' => '', + '08' => '', + '09' => '', + '10' => '', + '11' => '', + ], + 'BN' => [ + // Seems Maxmind totally screwed up the region codes for Brunei + // They used the codes for Benin (which has BN as FIPS country code) and replaced those codes available for Brunei + + // valid codes + '08' => 'BE', // Belait + '09' => 'BM', // Brunei and Muara + '10' => 'TE', // Temburong + '15' => 'TU', // Tutong + + // invalid codes that should not occur + '07' => '', // Alibori + '11' => '', // Collines + '12' => '', // Kouffo + '13' => '', // Donga + '14' => '', // Littoral + '16' => '', // Oueme + '17' => '', // Plateau + '18' => '', // Zou + ], + 'BO' => [ + '01' => 'H', + '02' => 'C', + '03' => 'B', + '04' => 'L', + '05' => 'O', + '06' => 'N', + '07' => 'P', + '08' => 'S', + '09' => 'T', + ], + 'BR' => [ + '01' => 'AC', + '02' => 'AL', + '03' => 'AP', + '04' => 'AM', + '05' => 'BA', + '06' => 'CE', + '07' => 'DF', + '08' => 'ES', + '11' => 'MS', + '13' => 'MA', + '14' => 'MT', + '15' => 'MG', + '16' => 'PA', + '17' => 'PB', + '18' => 'PR', + '20' => 'PI', + '21' => 'RJ', + '22' => 'RN', + '23' => 'RS', + '24' => 'RO', + '25' => 'RR', + '26' => 'SC', + '27' => 'SP', + '28' => 'SE', + '29' => 'GO', + '30' => 'PE', + '31' => 'TO', + ], + 'BS' => [ + '05' => 'BI', // Bimini + '06' => 'CI', // Cat Island + '10' => 'EX', // Exuma + '13' => 'IN', // Inagua + '15' => 'LI', // Long Island + '16' => 'MG', // Mayaguana + '18' => 'RI', // Ragged Island + '22' => 'HI', // Harbour Island + '23' => '', // New Providence deleted in 2011 - without replacement (https://en.wikipedia.org/wiki/ISO_3166-2:BS#Changes) + '24' => '', // Acklins and Crooked Islands [now two seperate codes AK & CK] + '25' => 'FP', // Freeport + '26' => 'CS', // Fresh Creek [is now roughly Central Andros] + '27' => 'CE', // Governor's Harbour [is now roughly Central Eleuthera] + '28' => 'HT', // Green Turtle Cay - mapped to GT by wikidata, but removed in 2010 - now HT according to geonames (http://www.geonames.org/maps/google_26.758_-77.325.html) + '29' => 'EG', // High Rock [is now roughly East Grand Bahama] + '30' => 'SA', // Kemps Bay [now in South Andros] + '31' => '', // Marsh Harbour + '32' => '', // Nichollstown and Berry Islands + '33' => 'SE', // Rock Sound [is now roughly South Eleuthera] + '34' => '', // Sandy Point + '35' => '', // San Salvador and Rum Cay [now two seperate codes SS & RC] + ], + 'BT' => [ + '05' => '33', + '06' => '12', + '07' => '21', + '08' => '22', + '09' => '31', + '10' => '13', + '11' => '44', + '12' => '42', + '13' => '11', + '14' => '43', + '15' => '23', + '16' => '14', // Samtse + '17' => '45', + '18' => '34', // Zhemgang + '19' => '41', + '20' => '15', + '21' => '32', // Tongsa + '22' => '24', // Wangdi Phodrang + ], + 'BW' => [ + '01' => 'CE', + '03' => 'GH', + '04' => 'KG', + '05' => 'KL', + '06' => 'KW', + '08' => 'NE', + '09' => 'SE', + '10' => 'SO', + '11' => 'NW', + ], + 'BY' => [ + '01' => 'BR', + '02' => 'HO', + '03' => 'HR', + '04' => 'HM', + '05' => 'MI', + '06' => 'MA', + '07' => 'VI', + ], + 'BZ' => [ + '01' => 'BZ', + '02' => 'CY', + '03' => 'CZL', + '04' => 'OW', + '05' => 'SC', + '06' => 'TOL', + ], + 'CD' => [ + '01' => '', // Bandundu [split up] + '02' => 'EQ', // Equateur + '04' => 'KE', // Kasai-Oriental + '05' => '', // Katanga [split up] + '06' => 'KN', // Kinshasa + '08' => 'BC', // Bas-Congo + '09' => '', // Orientale [split up] + '10' => 'MA', // Maniema + '11' => 'NK', // Nord-Kivu + '12' => 'SK', // Sud-Kivu + + // valid codes [not used by maxmind] + '03' => '', // Kasaï-Occidental [split up] + ], + 'CF' => [ + '01' => 'BB', + '02' => 'BK', + '03' => 'HK', + '04' => 'HS', + '05' => 'HM', + '06' => 'KG', + '07' => 'LB', + '08' => 'MB', + '09' => 'NM', + '11' => 'UK', + '12' => 'AC', + '13' => 'OP', + '14' => 'VK', + '15' => 'KB', + '16' => 'SE', + '17' => 'MP', + '18' => 'BGF', + ], + 'CG' => [ + '01' => '11', + '04' => '5', + '05' => '2', + '06' => '7', + '07' => '9', + '08' => '14', + '10' => '13', + '11' => '12', + '12' => 'BZV', + '13' => '8', + '14' => '15', + ], + 'CH' => [ + '01' => 'AG', + '02' => 'AR', + '03' => 'BL', + '04' => 'BS', + '05' => 'BE', + '06' => 'FR', + '07' => 'GE', + '08' => 'GL', + '09' => 'GR', + '10' => 'AI', + '11' => 'LU', + '12' => 'NE', + '13' => 'NW', + '14' => 'OW', + '15' => 'SG', + '16' => 'SH', + '17' => 'SZ', + '18' => 'SO', + '19' => 'TG', + '20' => 'TI', + '21' => 'UR', + '22' => 'VS', + '23' => 'VD', + '24' => 'ZG', + '25' => 'ZH', + '26' => 'JU', + ], + 'CI' => [ + '74' => 'LG', // Agneby [now part of Lagunes] + '75' => 'WR', // Bafing [now part of Woroba] + '76' => 'BS', // Bas-Sassandra + '77' => 'DN', // Denguele + '78' => 'MG', // Dix-Huit Montagnes + '79' => 'GD', // Fromager [now part of Gôh-Djiboua] + '80' => 'SM', // Haut-Sassandra + '81' => 'LC', // Lacs + '82' => 'LG', // Lagunes + '83' => 'SM', // Marahoue + '84' => 'MG', // Moyen-Cavally [now part of Montagnes] + '85' => 'CM', // Moyen-Comoe [now part of Comoé] + '86' => 'LC', // N'zi-Comoe [now part of Lacs] + '87' => 'SV', // Savanes + '88' => '', // Sud-Bandama [spit up] + '89' => 'CM', // Sud-Comoe + '90' => 'VB', // Vallee du Bandama + '91' => 'WR', // Worodougou [now part of Woroba] + '92' => 'ZZ', // Zanzan + ], + 'CL' => [ + '01' => 'VS', + '02' => 'AI', + '03' => 'AN', + '04' => 'AR', + '05' => 'AT', + '06' => 'BI', + '07' => 'CO', + '08' => 'LI', + '10' => 'MA', + '11' => 'ML', + '12' => 'RM', + '14' => 'LL', + '15' => 'TA', + '16' => 'AP', + '17' => 'LR', + + // mapped based on their names (https://en.wikipedia.org/wiki/ISO_3166-2:CL) + '09' => 'LL', // Los Lagos + '13' => 'TA', // Tarapaca + ], + 'CM' => [ + '04' => 'ES', + '05' => 'LT', + '07' => 'NW', + '08' => 'OU', + '09' => 'SW', + '10' => 'AD', + '11' => 'CE', + '12' => 'EN', + '13' => 'NO', + '14' => 'SU', + ], + 'CN' => [ + '01' => 'AH', + '02' => 'ZJ', + '03' => 'JX', + '04' => 'JS', + '05' => 'JL', + '06' => 'QH', + '07' => 'FJ', + '08' => 'HL', + '09' => 'HA', + '10' => 'HE', + '11' => 'HN', + '12' => 'HB', + '13' => 'XJ', + '14' => 'XZ', + '15' => 'GS', + '16' => 'GX', + '18' => 'GZ', + '19' => 'LN', + '20' => 'NM', + '21' => 'NX', + '22' => 'BJ', + '23' => 'SH', + '24' => 'SX', + '25' => 'SD', + '26' => 'SN', + '28' => 'TJ', + '29' => 'YN', + '30' => 'GD', + '31' => 'HI', + '32' => 'SC', + '33' => 'CQ', + ], + 'CO' => [ + '01' => 'AMA', + '02' => 'ANT', + '03' => 'ARA', + '04' => 'ATL', + '08' => 'CAQ', + '09' => 'CAU', + '10' => 'CES', + '11' => 'CHO', + '12' => 'COR', + '14' => 'GUV', + '15' => 'GUA', + '16' => 'HUI', + '17' => 'LAG', + '19' => 'MET', + '20' => 'NAR', + '21' => 'NSA', + '22' => 'PUT', + '23' => 'QUI', + '24' => 'RIS', + '25' => 'SAP', + '26' => 'SAN', + '27' => 'SUC', + '28' => 'TOL', + '29' => 'VAC', + '30' => 'VAU', + '31' => 'VID', + '32' => 'CAS', + '33' => 'CUN', + '34' => 'DC', + '35' => 'BOL', + '36' => 'BOY', + '37' => 'CAL', + '38' => 'MAG', + ], + 'CR' => [ + '01' => 'A', + '02' => 'C', + '03' => 'G', + '04' => 'H', + '06' => 'L', + '07' => 'P', + '08' => 'SJ', + ], + 'CU' => [ + '01' => '01', // Pinar del Rio + '02' => '', // Ciudad de la Habana was splitted in 2011 into 15 & 16 (https://en.wikipedia.org/wiki/ISO_3166-2:CU) + '03' => '04', // Matanzas + '04' => '99', // Isla de la Juventud + '05' => '09', // Camaguey + '07' => '08', // Ciego de Avila + '08' => '06', // Cienfuegos + '09' => '12', // Granma + '10' => '14', // Guantanamo + '11' => '03', // La Habana + '12' => '11', // Holguin + '13' => '10', // Las Tunas + '14' => '07', // Sancti Spiritus + '15' => '13', // Santiago de Cuba + '16' => '05', // Villa Clara + ], + 'CV' => [ + '01' => 'BV', + '02' => 'BR', + '04' => 'MA', + '05' => 'PA', + '07' => 'RG', + '08' => 'SL', + '10' => '', // Sao Nicolau was splitted in 2005 into Ribeira Brava (BR) & Tarrafal de São Nicolau (TS) (https://en.wikipedia.org/wiki/ISO_3166-2:CV) + '11' => 'SV', + '13' => 'MO', + '14' => 'PR', + '15' => 'CA', + '16' => 'CR', + '17' => 'SD', + '18' => 'SF', + '19' => 'SM', + '20' => 'TA', + ], + 'CY' => [ + '01' => '04', + '02' => '06', + '03' => '03', + '04' => '01', + '05' => '02', + '06' => '05', + ], + 'CZ' => [ + '52' => '10', + '78' => '64', + '79' => '31', + '80' => '63', + '81' => '41', + '82' => '52', + '83' => '51', + '84' => '71', + '85' => '80', + '86' => '53', + '87' => '32', + '88' => '20', + '89' => '42', + '90' => '72', + ], + 'DE' => [ + '01' => 'BW', + '02' => 'BY', + '03' => 'HB', + '04' => 'HH', + '05' => 'HE', + '06' => 'NI', + '07' => 'NW', + '08' => 'RP', + '09' => 'SL', + '10' => 'SH', + '11' => 'BB', + '12' => 'MV', + '13' => 'SN', + '14' => 'ST', + '15' => 'TH', + '16' => 'BE', + ], + 'DJ' => [ + '01' => 'AS', + '04' => 'OB', + '05' => 'TA', + '06' => 'DI', + '07' => 'DJ', + '08' => 'AR', + ], + 'DK' => [ + '17' => '84', + '18' => '82', + '19' => '81', + '20' => '85', + '21' => '83', + ], + 'DM' => [ + '02' => '02', + '03' => '03', + '04' => '04', + '05' => '05', + '06' => '06', + '07' => '07', + '08' => '08', + '09' => '09', + '10' => '10', + '11' => '11', + ], + 'DO' => [ + '01' => '02', + '02' => '03', + '03' => '04', + '04' => '05', + '05' => '01', // Distrito Nacional + '06' => '06', + '08' => '09', + '09' => '10', + '10' => '11', + '11' => '07', + '12' => '12', + '14' => '14', + '15' => '15', + '16' => '16', + '17' => '17', // Peravia + '18' => '18', + '19' => '19', + '20' => '20', + '21' => '24', + '23' => '22', + '24' => '23', + '25' => '25', + '26' => '26', + '27' => '27', + '28' => '08', + '29' => '30', + '30' => '13', + '31' => '28', + '32' => '29', + '33' => '21', + '34' => '01', + '35' => '17', + '36' => '31', + '37' => '32', + ], + 'DZ' => [ + '01' => '16', + '03' => '05', + '04' => '25', + '06' => '26', + '07' => '27', + '09' => '31', + '10' => '20', + '12' => '19', + '13' => '14', + '14' => '15', + '15' => '13', + '18' => '06', + '19' => '07', + '20' => '09', + '21' => '10', + '22' => '17', + '23' => '24', + '24' => '18', + '25' => '03', + '26' => '29', + '27' => '28', + '29' => '04', + '30' => '22', + '31' => '21', + '33' => '12', + '34' => '01', + '35' => '44', + '36' => '46', + '37' => '23', + '38' => '08', + '39' => '34', + '40' => '35', + '41' => '02', + '42' => '32', + '43' => '39', + '44' => '36', + '45' => '47', + '46' => '33', + '47' => '40', + '48' => '43', + '49' => '45', + '50' => '30', + '51' => '48', + '52' => '41', + '53' => '11', + '54' => '37', + '55' => '42', + '56' => '38', + ], + 'EC' => [ + '01' => 'W', + '02' => 'A', + '03' => 'B', + '04' => 'F', + '05' => 'C', + '06' => 'H', + '07' => 'X', + '08' => 'O', + '09' => 'E', + '10' => 'G', + '11' => 'I', + '12' => 'L', + '13' => 'R', + '14' => 'M', + '15' => 'S', + '17' => 'Y', + '18' => 'P', + '19' => 'T', + '20' => 'Z', + '22' => 'U', + '23' => 'N', + '24' => 'D', + ], + 'EE' => [ + '01' => '37', + '02' => '39', + '03' => '44', + '04' => '51', + '05' => '49', + '07' => '57', + '08' => '59', + '11' => '67', + '12' => '65', + '13' => '70', + '14' => '74', + '18' => '78', + '19' => '82', + '20' => '84', + '21' => '86', + + // invalid codes [used by maxmind] (mapped based on https://en.wikipedia.org/wiki/Municipalities_of_Estonia#Former_municipalities) + '06' => '44', // Kohtla-Jarve is part of Ida-Viru + '09' => '44', // Narva is part of Ida-Viru + '10' => '67', // Parnu + '15' => '44', // Sillamae is part of Ida-Viru + '16' => '37', // Tallinn is part of Harju + '17' => '78', // Tartu + ], + 'EG' => [ + '01' => 'DK', + '02' => 'BA', + '03' => 'BH', + '04' => 'FYM', + '05' => 'GH', + '06' => 'ALX', + '07' => 'IS', + '08' => 'GZ', + '09' => 'MNF', + '10' => 'MN', + '11' => 'C', + '12' => 'KB', + '13' => 'WAD', + '14' => 'SHR', + '15' => 'SUZ', + '16' => 'ASN', + '17' => 'AST', + '18' => 'BNS', + '19' => 'PTS', + '20' => 'DT', + '21' => 'KFS', + '22' => 'MT', + '23' => 'KN', + '24' => 'SHG', + '26' => 'JS', + '27' => 'SIN', + + // invalid codes [used by maxmind] + '28' => 'LX', // Al Uqsur + ], + 'ER' => [ + '01' => 'AN', + '02' => 'DU', + '03' => 'DK', + '04' => 'GB', + '05' => 'MA', + '06' => 'SK', + ], + 'ES' => [ + '07' => 'IB', + '27' => 'LO', + '29' => 'MD', + '31' => 'MC', + '32' => 'NC', + '34' => 'AS', + '39' => 'CB', + '51' => 'AN', + '52' => 'AR', + '53' => 'CN', + '54' => 'CM', + '55' => 'CL', + '56' => 'CT', + '57' => 'EX', + '58' => 'GA', + '59' => 'PV', + '60' => 'VC', + ], + 'ET' => [ + '44' => 'AA', + '45' => 'AF', + '46' => 'AM', + '47' => 'BE', + '48' => 'DD', + '49' => 'GA', + '50' => 'HA', + '51' => 'OR', + '52' => 'SO', + '53' => 'TI', + '54' => 'SN', + ], + 'FI' => [ + // was rearranged in 2011. codes on wikidata are outdated (https://en.wikipedia.org/wiki/ISO_3166-2:FI) + '01' => '01', // Aland + '06' => '10', // Lapland + '08' => '', // Oulu splitted into subdivisions + '13' => '', // Southern Finland splitted into subdivisions + '14' => '', // Eastern Finland splitted into subdivisions + '15' => '', // Western Finland splitted into subdivisions + ], + 'FJ' => [ + '01' => 'C', + '02' => 'E', + '03' => 'N', + '04' => 'R', + '05' => 'W', + ], + 'FR' => [ + '97' => 'NAQ', // Aquitaine + '98' => 'ARA', // Auvergne + '99' => 'NOR', // Basse-Normandie + 'A1' => 'BFC', // Bourgogne + 'A2' => 'BRE', // Bretagne + 'A3' => 'CVL', // Centre + 'A4' => 'GES', // Champagne-Ardenne + 'A5' => 'COR', // Corse + 'A6' => 'BFC', // Franche-Comte + 'A7' => 'NOR', // Haute-Normandie + 'A8' => 'IDF', // Ile-de-France + 'A9' => 'OCC', // Languedoc-Roussillon + 'B1' => 'NAQ', // Limousin + 'B2' => 'GES', // Lorraine + 'B3' => 'OCC', // Midi-Pyrenees + 'B4' => 'HDF', // Nord-Pas-de-Calais + 'B5' => 'PDL', // Pays de la Loire + 'B6' => 'HDF', // Picardie + 'B7' => 'NAQ', // Poitou-Charentes + 'B8' => 'PAC', // Provence-Alpes-Cote d'Azur + 'B9' => 'ARA', // Rhone-Alpes + 'C1' => 'GES', // Alsace + ], + 'FM' => [ + '01' => 'KSA', // Kosrae + '02' => 'PNI', // Pohnpei + '03' => 'TRK', // Chuuk + '04' => 'YAP', // Yap + ], + 'GA' => [ + '01' => '1', + '02' => '2', + '03' => '3', + '04' => '4', + '05' => '5', + '06' => '6', + '07' => '7', + '08' => '8', + '09' => '9', + ], + 'GB' => [ + 'A1' => 'BDG', + 'A2' => 'BNE', + 'A3' => 'BNS', + 'A4' => 'BAS', + 'A5' => '', // Bedfordshire [split up] + 'A6' => 'BEX', + 'A7' => 'BIR', + 'A8' => 'BBD', + 'A9' => 'BPL', + 'B1' => 'BOL', + 'B2' => 'BMH', + 'B3' => 'BRC', + 'B4' => 'BRD', + 'B5' => 'BEN', + 'B6' => 'BNH', + 'B7' => 'BST', + 'B8' => 'BRY', + 'B9' => 'BKM', + 'C1' => 'BUR', + 'C2' => 'CLD', + 'C3' => 'CAM', + 'C4' => 'CMD', + 'C5' => '', // Cheshire [split up] + 'C6' => 'CON', + 'C7' => 'COV', + 'C8' => 'CRY', + 'C9' => 'CMA', + 'D1' => 'DAL', + 'D2' => 'DER', + 'D3' => 'DBY', + 'D4' => 'DEV', + 'D5' => 'DNC', + 'D6' => 'DOR', + 'D7' => 'DUD', + 'D8' => 'DUR', + 'D9' => 'EAL', + 'E1' => 'ERY', + 'E2' => 'ESX', + 'E3' => 'ENF', + 'E4' => 'ESS', + 'E5' => 'GAT', + 'E6' => 'GLS', + 'E7' => 'GRE', + 'E8' => 'HCK', + 'E9' => 'HAL', + 'F1' => 'HMF', + 'F2' => 'HAM', + 'F3' => 'HRY', + 'F4' => 'HRW', + 'F5' => 'HPL', + 'F6' => 'HAV', + 'F7' => 'HEF', + 'F8' => 'HRT', + 'F9' => 'HIL', + 'G1' => 'HNS', + 'G2' => 'IOW', + 'G3' => 'ISL', + 'G4' => 'KEC', + 'G5' => 'KEN', + 'G6' => 'KHL', + 'G7' => 'KTT', + 'G8' => 'KIR', + 'G9' => 'KWL', + 'H1' => 'LBH', + 'H2' => 'LAN', + 'H3' => 'LDS', + 'H4' => 'LCE', + 'H5' => 'LEC', + 'H6' => 'LEW', + 'H7' => 'LIN', + 'H8' => 'LIV', + 'H9' => 'LND', + 'I1' => 'LUT', + 'I2' => 'MAN', + 'I3' => 'MDW', + 'I4' => 'MRT', + 'I5' => 'MDB', + 'I6' => 'MIK', + 'I7' => 'NET', + 'I8' => 'NWM', + 'I9' => 'NFK', + 'J1' => 'NTH', + 'J2' => 'NEL', + 'J3' => 'NLN', + 'J4' => 'NSM', + 'J5' => 'NTY', + 'J6' => 'NBL', + 'J7' => 'NYK', + 'J8' => 'NGM', + 'J9' => 'NTT', + 'K1' => 'OLD', + 'K2' => 'OXF', + 'K3' => 'PTE', + 'K4' => 'PLY', + 'K5' => 'POL', + 'K6' => 'POR', + 'K7' => 'RDG', + 'K8' => 'RDB', + 'K9' => 'RCC', + 'L1' => 'RIC', + 'L2' => 'RCH', + 'L3' => 'ROT', + 'L4' => 'RUT', + 'L5' => 'SLF', + 'L6' => 'SHR', + 'L7' => 'SAW', + 'L8' => 'SFT', + 'L9' => 'SHF', + 'M1' => 'SLG', + 'M2' => 'SOL', + 'M3' => 'SOM', + 'M4' => 'STH', + 'M5' => 'SOS', + 'M6' => 'SGC', + 'M7' => 'STY', + 'M8' => 'SWK', + 'M9' => 'STS', + 'N1' => 'SHN', + 'N2' => 'SKP', + 'N3' => 'STT', + 'N4' => 'STE', + 'N5' => 'SFK', + 'N6' => 'SND', + 'N7' => 'SRY', + 'N8' => 'STN', + 'N9' => 'SWD', + 'O1' => 'TAM', + 'O2' => 'TFW', + 'O3' => 'THR', + 'O4' => 'TOB', + 'O5' => 'TWH', + 'O6' => 'TRF', + 'O7' => 'WKF', + 'O8' => 'WLL', + 'O9' => 'WFT', + 'P1' => 'WND', + 'P2' => 'WRT', + 'P3' => 'WAR', + 'P4' => 'WBK', + 'P5' => 'WSM', + 'P6' => 'WSX', + 'P7' => 'WGN', + 'P8' => 'WIL', + 'P9' => 'WNM', + 'Q1' => 'WRL', + 'Q2' => 'WOK', + 'Q3' => 'WLV', + 'Q4' => 'WOR', + 'Q5' => 'YOR', + 'Q6' => 'ANN', + 'Q7' => 'AND', + 'Q8' => 'ABC', // Armagh [merged into Armagh, Banbridge and Craigavon] + 'Q9' => 'MEA', + 'R1' => 'CCG', // Ballymoney [merged into Causeway Coast and Glens] + 'R2' => 'ABC', // Banbridge [merged into Armagh, Banbridge and Craigavon] + 'R3' => 'BFS', + 'R4' => 'MEA', + 'R5' => 'LBC', // Castlereagh [merged into Lisburn and Castlereagh] + 'R6' => 'CCG', + 'R7' => 'MUL', + 'R8' => 'ABC', // Craigavon [merged into Armagh, Banbridge and Craigavon] + 'R9' => 'NMD', // Down [merged into Newry, Mourne and Down] + 'S1' => 'MUL', // Dungannon and South Tyrone [merged into Mid-Ulster] + 'S2' => 'FMO', // Fermanagh + 'S3' => 'MEA', // Larne [merged into Mid and East Antrim] + 'S4' => 'CCG', // Limavady [merged into Causeway Coast and Glens] + 'S5' => 'LBC', // Lisburn + 'S6' => 'DRS', + 'S7' => 'MUL', // Magherafelt [merged into Mid-Ulster] + 'S8' => 'CCG', + 'S9' => 'NMD', + 'T1' => 'ANN', // Newtownabbey [merged into Antrim and Newtownabbey] + 'T2' => 'AND', // North Down [merged into North Down and Ards] + 'T3' => 'FMO', // Omagh + 'T4' => 'DRS', // Strabane + 'T5' => 'ABE', + 'T6' => 'ABD', + 'T7' => 'ANS', + 'T8' => 'AGB', + 'T9' => 'SCB', + 'U1' => 'CLK', + 'U2' => 'DGY', + 'U3' => 'DND', + 'U4' => 'EAY', + 'U5' => 'EDU', + 'U6' => 'ELN', + 'U7' => 'ERW', + 'U8' => 'EDH', + 'U9' => 'FAL', + 'V1' => 'FIF', + 'V2' => 'GLG', + 'V3' => 'HLD', + 'V4' => 'IVC', + 'V5' => 'MLN', + 'V6' => 'MRY', + 'V7' => 'NAY', + 'V8' => 'NLK', + 'V9' => 'ORK', + 'W1' => 'PKN', + 'W2' => 'RFW', + 'W3' => 'ZET', + 'W4' => 'SAY', + 'W5' => 'SLK', + 'W6' => 'STG', + 'W7' => 'WDU', + 'W8' => 'ELS', + 'W9' => 'WLN', + 'X1' => 'AGY', + 'X2' => 'BGW', + 'X3' => 'BGE', + 'X4' => 'CAY', + 'X5' => 'CRF', + 'X6' => 'CGN', + 'X7' => 'CMN', + 'X8' => 'CWY', + 'X9' => 'DEN', + 'Y1' => 'FLN', + 'Y2' => 'GWN', + 'Y3' => 'MTY', + 'Y4' => 'MON', + 'Y5' => 'NTL', + 'Y6' => 'NWP', + 'Y7' => 'PEM', + 'Y8' => 'POW', + 'Y9' => 'RCT', + 'Z1' => 'SWA', + 'Z2' => 'TOF', + 'Z3' => 'VGL', + 'Z4' => 'WRX', + + // invalid codes [used by maxmind] (mapped based on names) + 'Z5' => '', // Bedfordshire [split up] + 'Z6' => 'CBF', // Central Bedfordshire + 'Z7' => 'CHE', // Cheshire East + 'Z8' => 'CHW', // Cheshire West and Chester + 'Z9' => 'IOS', // Isles of Scilly + ], + 'GD' => [ + '01' => '01', + '02' => '02', + '03' => '03', + '04' => '04', + '05' => '05', + '06' => '06', + ], + 'GE' => [ + // subdivisions rearranged 2002 (https://en.wikipedia.org/wiki/ISO_3166-2:EG) + // mapping based on the subdivision wikipedia pages + '01' => 'SZ', // Abashis Raioni is within Samegrelo-Zemo Svaneti + '02' => 'AB', // Abkhazia + '03' => 'SJ', // Adigenis Raioni is within Samtskhe-Javakheti + '04' => 'AJ', // Ajaria + '05' => 'MM', // Akhalgoris Raioni is within Mtskheta-Mtianeti + '06' => 'SJ', // Akhalk'alak'is Raioni is within Samtskhe-Javakheti + '07' => 'SJ', // Akhalts'ikhis Raioni is within Samtskhe-Javakheti + '08' => 'KA', // Akhmetis Raioni is within Kakheti + '09' => 'RL', // Ambrolauris Raioni is within Racha-Lechkhumi and Kvemo Svaneti + '10' => 'SJ', // Aspindzis Raioni is within Samtskhe-Javakheti + '11' => 'IM', // Baghdat'is Raioni is within Imereti + '12' => 'KK', // Bolnisis Raioni is within Kvemo Kartli + '13' => 'SJ', // Borjomis Raioni is within Samtskhe-Javakheti + '14' => 'IM', // Chiat'ura is within Imereti + '15' => 'SZ', // Ch'khorotsqus Raioni is within Samegrelo-Zemo Svaneti + '16' => 'GU', // Ch'okhatauris Raioni is within Guria + '17' => 'KA', // Dedop'listsqaros Raioni is within Kakheti + '18' => 'KA', // Dmanisis Raioni is within Kakheti + '19' => 'MM', // Dushet'is Raioni is within Mtskheta-Mtianeti + '20' => 'KK', // Gardabanis Raioni is within Kvemo Kartli + '21' => 'SK', // Gori is within Shida Kartli + '22' => 'SK', // Goris Raioni is within Shida Kartli + '23' => 'KA', // Gurjaanis Raioni is within Kakheti + '24' => 'SK', // Javis Raioni is within Shida Kartli + '25' => 'SK', // K'arelis Raioni is within Shida Kartli + '26' => 'SK', // Kaspis Raioni is within Shida Kartli + '27' => 'IM', // Kharagaulis Raioni is within Imereti + '28' => 'SK', // Khashuris Raioni is within Shida Kartli + '29' => 'SZ', // Khobis Raioni is within Samegrelo-Zemo Svaneti + '30' => 'IM', // Khonis Raioni is within Imereti + '31' => 'IM', // K'ut'aisi is within Imereti + '32' => 'KA', // Lagodekhis Raioni is within Kakheti + '33' => 'GU', // Lanch'khut'is Raioni is within Guria + '34' => 'RL', // Lentekhis Raioni is within Racha-Lechkhumi and Kvemo Svaneti + '35' => 'KK', // Marneulis Raioni is within Kvemo Kartli + '36' => 'SZ', // Martvilis Raioni is within Samegrelo-Zemo Svaneti + '37' => 'SZ', // Mestiis Raioni is within Samegrelo-Zemo Svaneti + '38' => 'MM', // Mts'khet'is Raioni is within Mtskheta-Mtianeti + '39' => 'SJ', // Ninotsmindis Raioni is within Samtskhe-Javakheti + '40' => 'RL', // Onis Raioni is within Racha-Lechkhumi and Kvemo Svaneti + '41' => 'GU', // Ozurget'is Raioni is within Guria + '42' => 'SZ', // P'ot'i is within Samegrelo-Zemo Svaneti + '43' => 'MM', // Qazbegis Raioni is within Mtskheta-Mtianeti + '44' => 'KA', // Qvarlis Raioni is within Kakheti + '45' => 'KK', // Rust'avi is within Kvemo Kartli + '46' => 'IM', // Sach'kheris Raioni is within Imereti + '47' => 'KA', // Sagarejos Raioni is within Kakheti + '48' => 'IM', // Samtrediis Raioni is within Imereti + '49' => 'SZ', // Senakis Raioni is within Samegrelo-Zemo Svaneti + '50' => 'KA', // Sighnaghis Raioni is within Kakheti + '51' => 'TB', // T'bilisi + '52' => 'KA', // T'elavis Raioni is within Kakheti + '53' => 'IM', // T'erjolis Raioni is within Imereti + '54' => 'KK', // T'et'ritsqaros Raioni is within Kvemo Kartli + '55' => 'MM', // T'ianet'is Raioni is within Mtskheta-Mtianeti + '56' => 'IM', // Tqibuli is within Imereti + '57' => 'RL', // Ts'ageris Raioni is within Racha-Lechkhumi and Kvemo Svaneti + '58' => 'SZ', // Tsalenjikhis Raioni is within Samegrelo-Zemo Svaneti + '59' => 'KK', // Tsalkis Raioni is within Kvemo Kartli + '60' => 'IM', // Tsqaltubo is within Imereti + '61' => 'IM', // Vanis Raioni is within Imereti + '62' => 'IM', // Zestap'onis Raioni is within Imereti + '63' => 'SZ', // Zugdidi is within Samegrelo-Zemo Svaneti + '64' => 'SZ', // Zugdidis Raioni is within Samegrelo-Zemo Svaneti + ], + 'GH' => [ + '01' => 'AA', + '02' => 'AH', + '03' => 'BA', + '04' => 'CP', + '05' => 'EP', + '06' => 'NP', + '08' => 'TV', + '09' => 'WP', + '10' => 'UE', + '11' => 'UW', + ], + 'GL' => [ + // ISO introduced their own regions in 2010, they completely differ from FIPS and are not mappable + '01' => '', // Nordgronland + '02' => '', // Ostgronland + '03' => '', // Vestgronland + ], + 'GM' => [ + '01' => 'B', + '02' => 'L', + '03' => 'M', + '04' => 'U', + '05' => 'W', + '07' => 'N', + ], + 'GN' => [ + '01' => 'BE', // Beyla + '02' => 'BF', // Boffa + '03' => 'BK', // Boke + '04' => 'C', // Conakry + '05' => 'DB', // Dabola + '06' => 'DL', // Dalaba + '07' => 'DI', // Dinguiraye + '09' => 'FA', // Faranah + '10' => 'FO', // Forecariah + '11' => 'FR', // Fria + '12' => 'GA', // Gaoual + '13' => 'GU', // Gueckedou + '15' => 'KE', // Kerouane + '16' => 'KD', // Kindia + '17' => 'KS', // Kissidougou + '18' => 'KN', // Koundara + '19' => 'KO', // Kouroussa + '21' => 'MC', // Macenta + '22' => 'ML', // Mali + '23' => 'MM', // Mamou + '25' => 'PI', // Pita + '27' => 'TE', // Telimele + '28' => 'TO', // Tougue + '29' => 'YO', // Yomou + '30' => 'CO', // Coyah + '31' => 'DU', // Dubreka + '32' => 'KA', // Kankan + '33' => 'KB', // Koubia + '34' => 'LA', // Labe + '35' => 'LE', // Lelouma + '36' => 'LO', // Lola + '37' => 'MD', // Mandiana + '38' => 'NZ', // Nzerekore + '39' => 'SI', // Siguiri + ], + 'GQ' => [ + '03' => 'AN', + '04' => 'BN', + '05' => 'BS', + '06' => 'CS', + '07' => 'KN', + '08' => 'LI', + '09' => 'WN', + ], + 'GR' => [ + // rearranged 2016. mapping based on (https://en.wikipedia.org/wiki/ISO_3166-2:GR) + '01' => 'A', // Evros + '02' => 'A', // Rodhopi + '03' => 'A', // Xanthi + '04' => 'A', // Drama + '05' => 'B', // Serrai + '06' => 'B', // Kilkis + '07' => 'B', // Pella + '08' => 'C', // Florina + '09' => 'C', // Kastoria + '10' => 'C', // Grevena + '11' => 'C', // Kozani + '12' => 'B', // Imathia + '13' => 'B', // Thessaloniki + '14' => 'A', // Kavala + '15' => 'B', // Khalkidhiki + '16' => 'B', // Pieria + '17' => 'D', // Ioannina + '18' => 'D', // Thesprotia + '19' => 'D', // Preveza + '20' => 'D', // Arta + '21' => 'E', // Larisa + '22' => 'E', // Trikala + '23' => 'E', // Kardhitsa + '24' => 'E', // Magnisia + '25' => 'F', // Kerkira + '26' => 'F', // Levkas + '27' => 'F', // Kefallinia + '28' => 'F', // Zakinthos + '29' => 'H', // Fthiotis + '30' => 'H', // Evritania + '31' => 'G', // Aitolia kai Akarnania + '32' => 'H', // Fokis + '33' => 'H', // Voiotia + '34' => 'H', // Evvoia + '35' => 'I', // Attiki + '36' => 'J', // Argolis + '37' => 'J', // Korinthia + '38' => 'G', // Akhaia + '39' => 'G', // Ilia + '40' => 'J', // Messinia + '41' => 'J', // Arkadhia + '42' => 'J', // Lakonia + '43' => 'M', // Khania + '44' => 'M', // Rethimni + '45' => 'M', // Iraklion + '46' => 'M', // Lasithi + '47' => 'L', // Dhodhekanisos + '48' => 'K', // Samos + '49' => 'L', // Kikladhes + '50' => 'K', // Khios + '51' => 'K', // Lesvos + ], + 'GT' => [ + '01' => 'AV', + '02' => 'BV', + '03' => 'CM', + '04' => 'CQ', + '05' => 'PR', + '06' => 'ES', + '07' => 'GU', + '08' => 'HU', + '09' => 'IZ', + '10' => 'JA', + '11' => 'JU', + '12' => 'PE', + '13' => 'QZ', + '14' => 'QC', + '15' => 'RE', + '16' => 'SA', + '17' => 'SM', + '18' => 'SR', + '19' => 'SO', + '20' => 'SU', + '21' => 'TO', + '22' => 'ZA', + ], + 'GW' => [ + '01' => 'BA', + '02' => 'QU', + '04' => 'OI', + '05' => 'BL', + '06' => 'CA', + '07' => 'TO', + '10' => 'GA', + '11' => 'BS', + '12' => 'BM', + ], + 'GY' => [ + '10' => 'BA', + '11' => 'CU', + '12' => 'DE', + '13' => 'EB', + '14' => 'ES', + '15' => 'MA', + '16' => 'PM', + '17' => 'PT', + '18' => 'UD', + '19' => 'UT', + ], + 'HN' => [ + '01' => 'AT', + '02' => 'CH', + '03' => 'CL', + '04' => 'CM', + '05' => 'CP', + '06' => 'CR', + '07' => 'EP', + '08' => 'FM', + '09' => 'GD', + '10' => 'IN', + '11' => 'IB', + '12' => 'LP', + '13' => 'LE', + '14' => 'OC', + '15' => 'OL', + '16' => 'SB', + '17' => 'VA', + '18' => 'YO', + ], + 'HR' => [ + '01' => '07', + '02' => '12', + '03' => '19', + '04' => '18', + '05' => '04', + '06' => '06', + '07' => '02', + '08' => '09', + '09' => '20', + '10' => '14', + '11' => '11', + '12' => '08', + '13' => '15', + '14' => '03', + '15' => '17', + '16' => '05', + '17' => '10', + '18' => '16', + '19' => '13', + '20' => '01', + '21' => '21', + ], + 'HT' => [ + '03' => 'NO', + '06' => 'AR', + '07' => 'CE', + '09' => 'ND', + '10' => 'NE', + '11' => 'OU', + '12' => 'SD', + '13' => 'SE', + '14' => 'GA', + '15' => 'NI', + ], + 'HU' => [ + '01' => 'BK', // Bacs-Kiskun + '02' => 'BA', // Baranya + '03' => 'BE', // Bekes + '04' => 'BZ', // Borsod-Abauj-Zemplen + '05' => 'BU', // Budapest + '06' => 'CS', // Csongrad + '07' => 'DE', // Debrecen + '08' => 'FE', // Fejer + '09' => 'GS', // Gyor-Moson-Sopron + '10' => 'HB', // Hajdu-Bihar + '11' => 'HE', // Heves + '12' => 'KE', // Komarom-Esztergom + '13' => 'MI', // Miskolc + '14' => 'NO', // Nograd + '15' => 'PS', // Pecs + '16' => 'PE', // Pest + '17' => 'SO', // Somogy + '18' => 'SZ', // Szabolcs-Szatmar-Bereg + '19' => 'SD', // Szeged + '20' => 'JN', // Jasz-Nagykun-Szolnok + '21' => 'TO', // Tolna + '22' => 'VA', // Vas + '23' => 'VE', // Veszprem + '24' => 'ZA', // Zala + '25' => 'GY', // Gyor + '26' => 'BC', // Bekescsaba + '27' => 'DU', // Dunaujvaros + '28' => 'EG', // Eger + '29' => 'HV', // Hodmezovasarhely + '30' => 'KV', // Kaposvar + '31' => 'KM', // Kecskemet + '32' => 'NK', // Nagykanizsa + '33' => 'NY', // Nyiregyhaza + '34' => 'SN', // Sopron + '35' => 'SF', // Szekesfehervar + '36' => 'SK', // Szolnok + '37' => 'SH', // Szombathely + '38' => 'TB', // Tatabanya + '39' => 'VE', // Veszprem + '40' => 'ZE', // Zalaegerszeg + '41' => 'ST', // Salgotarjan + '42' => 'SS', // Szekszard + '43' => 'ER', // Erd + ], + 'ID' => [ + '01' => 'AC', + '02' => 'BA', + '03' => 'BE', + '04' => 'JK', + '05' => 'JA', + '07' => 'JT', + '08' => 'JI', + '10' => 'YO', + '11' => 'KB', + '12' => 'KS', + '13' => 'KT', + '14' => 'KI', + '15' => 'LA', + '17' => 'NB', + '18' => 'NT', + '21' => 'ST', + '22' => 'SG', + '24' => 'SB', + '26' => 'SU', + '28' => 'MA', + '29' => 'MU', + '30' => 'JB', + '31' => 'SA', + '32' => 'SS', + '33' => 'BT', + '34' => 'GO', + '35' => 'BB', + '36' => 'PA', + '37' => 'RI', + '38' => 'SN', + '39' => 'PB', + '40' => 'KR', + '41' => 'SR', + ], + 'IE' => [ + '01' => 'CW', + '02' => 'CN', + '03' => 'CE', + '04' => 'CO', + '06' => 'DL', + '07' => 'D', + '10' => 'G', + '11' => 'KY', + '12' => 'KE', + '13' => 'KK', + '14' => 'LM', + '15' => 'LS', + '16' => 'LK', + '18' => 'LD', + '19' => 'LH', + '20' => 'MO', + '21' => 'MH', + '22' => 'MN', + '23' => 'OY', + '24' => 'RN', + '25' => 'SO', + '26' => 'TA', + '27' => 'WD', + '29' => 'WH', + '30' => 'WX', + '31' => 'WW', + ], + 'IL' => [ + '01' => 'D', + '02' => 'M', + '03' => 'Z', + '04' => 'HA', + '05' => 'TA', + '06' => 'JM', + ], + 'IN' => [ + '01' => 'AN', + '02' => 'AP', + '03' => 'AS', + '05' => 'CH', + '06' => 'DN', + '07' => 'DL', + '09' => 'GJ', + '10' => 'HR', + '11' => 'HP', + '12' => 'JK', + '13' => 'KL', + '14' => 'LD', + '16' => 'MH', + '17' => 'MN', + '18' => 'ML', + '19' => 'KA', + '20' => 'NL', + '21' => 'OR', + '22' => 'PY', + '23' => 'PB', + '24' => 'RJ', + '25' => 'TN', + '26' => 'TR', + '28' => 'WB', + '29' => 'SK', + '30' => 'AR', + '31' => 'MZ', + '32' => 'DD', + '33' => 'GA', + '34' => 'BR', + '35' => 'MP', + '36' => 'UP', + '37' => 'CT', + '38' => 'JH', + '39' => 'UT', + ], + 'IQ' => [ + '01' => 'AN', + '02' => 'BA', + '03' => 'MU', + '04' => 'QA', + '05' => 'SU', + '06' => 'BB', + '07' => 'BG', + '08' => 'DA', + '09' => 'DQ', + '10' => 'DI', + '11' => 'AR', + '12' => 'KA', + '13' => 'KI', + '14' => 'MA', + '15' => 'NI', + '16' => 'WA', + '17' => 'NA', + '18' => 'SD', + ], + 'IR' => [ + // mapping based on wikidata and on manual name matches + '01' => '02', // Āz̄arbāyjān-e Gharbī Province + '03' => '08', // Chahār Maḩāll va Bakhtīār Province + '04' => '13', // Sīstān va Balūchestān Province + '05' => '18', // Kohgīlūyeh va Būyer Aḩmad Province + '07' => '14', // Fārs Province + '08' => '19', // Gīlān Province + '09' => '24', // Hamadān Province + '10' => '05', // Īlām Province + '11' => '23', // Hormozgān Province + '13' => '17', // Kermānshāh Province + '15' => '10', // Khūzestān Province + '16' => '16', // Kordestān Province + '22' => '06', // Būshehr Province + '23' => '20', // Lorestān Province + '25' => '12', // Semnān Province + '26' => '07', // Tehrān Province + '28' => '04', // Eşfahān Province + '29' => '15', // Kermān Province + '32' => '03', // Ardabīl Province + '33' => '01', // Āz̄arbāyjān-e Sharqī Province + '34' => '22', // Markaz Province + '35' => '21', // Māzandarān Province + '36' => '11', // Zanjān Province + '37' => '27', // Golestān Province + '38' => '28', // Qazvīn Province + '39' => '26', // Qom Province + '40' => '25', // Yazd Province + '41' => '29', // Khorāsān-e Janūbī Province + '42' => '30', // Khorāsān-e Razavī Province + '43' => '31', // Khorāsān-e Razavī Province + '44' => '32', // Alborz Province + + // invalid codes [used by maxmind] + '12' => '15', // Kerman + '17' => '21', // Mazandaran + '18' => '12', // Semnan Province + '19' => '22', // Markazi + '21' => '11', // Zanjan + '24' => '22', // Markazi + '27' => '11', // Zanjan + '30' => '', // Khorasan [split up] + '31' => '25', // Yazd + ], + 'IS' => [ + // codes contained in maxmind file, but actually no valid FIPS codes anymore + // mapping roughly based on the maps of Wikipedia + '03' => '8', // Arnessysla + '05' => '5', // Austur-Hunavatnssysla + '06' => '7', // Austur-Skaftafellssysla + '07' => '3', // Borgarfjardarsysla + '09' => '6', // Eyjafjardarsysla + '10' => '2', // Gullbringusysla + '15' => '1', // Kjosarsysla + '17' => '3', // Myrasysla + '20' => '7', // Nordur-Mulasysla + '21' => '6', // Nordur-Tingeyjarsysla + '23' => '8', // Rangarvallasysla + '28' => '5', // Skagafjardarsysla + '29' => '3', // Snafellsnes- og Hnappadalssysla + '30' => '4', // Strandasysla + '31' => '7', // Sudur-Mulasysla + '32' => '6', // Sudur-Tingeyjarsysla + '34' => '4', // Vestur-Bardastrandarsysla + '35' => '5', // Vestur-Hunavatnssysla + '36' => '4', // Vestur-Isafjardarsysla + '37' => '8', // Vestur-Skaftafellssysla + // valid FIPS codes + '38' => '7', // Austurland + '39' => '1', // Hofuoborgarsvaoio + '40' => '6', // Norourland Eystra + '41' => '5', // Norourland Vestra + '42' => '8', // Suourland + '43' => '2', // Suournes + '44' => '4', // Vestfiroir + '45' => '3', // Vesturland + ], + 'IT' => [ + '01' => '65', + '02' => '77', + '03' => '78', + '04' => '72', + '05' => '45', + '06' => '36', + '07' => '62', + '08' => '42', + '09' => '25', + '10' => '57', + '11' => '67', + '12' => '21', + '13' => '75', + '14' => '88', + '15' => '82', + '16' => '52', + '17' => '32', + '18' => '55', + '19' => '23', + '20' => '34', + ], + 'JM' => [ + '01' => '13', + '02' => '09', + '04' => '12', + '07' => '04', + '08' => '02', + '09' => '06', + '10' => '14', + '11' => '11', + '12' => '08', + '13' => '05', + '14' => '03', + '15' => '07', + '16' => '10', + '17' => '01', + ], + 'JO' => [ + '02' => 'BA', + '09' => 'KA', + '12' => 'AT', + '15' => 'MA', + '16' => 'AM', + '17' => 'AZ', + '18' => 'IR', + '19' => 'MN', + '20' => 'AJ', + '21' => 'AQ', + '22' => 'JA', + '23' => 'MD', + ], + 'JP' => [ + '01' => '23', + '02' => '05', + '03' => '02', + '04' => '12', + '05' => '38', + '06' => '18', + '07' => '40', + '08' => '07', + '09' => '21', + '10' => '10', + '11' => '34', + '12' => '01', + '13' => '28', + '14' => '08', + '15' => '17', + '16' => '03', + '17' => '37', + '18' => '46', + '19' => '14', + '20' => '39', + '21' => '43', + '22' => '26', + '23' => '24', + '24' => '04', + '25' => '45', + '26' => '20', + '27' => '42', + '28' => '29', + '29' => '15', + '30' => '44', + '31' => '33', + '32' => '27', + '33' => '41', + '34' => '11', + '35' => '25', + '36' => '32', + '37' => '22', + '38' => '09', + '39' => '36', + '40' => '13', + '41' => '31', + '42' => '16', + '43' => '30', + '44' => '06', + '45' => '35', + '46' => '19', + '47' => '47', + ], + 'KE' => [ + // completely reorganized in 2014 + '01' => '', + '02' => '', + '03' => '', + '05' => '', + '06' => '', + '07' => '', + '08' => '', + '09' => '', + ], + 'KG' => [ + '01' => 'GB', // Bishkek + '02' => 'C', // Chuy + '03' => 'J', // Jalal-Abad + '04' => 'N', // Naryn + '06' => 'T', // Talas + '07' => 'Y', // Ysyk-Kol + '08' => 'GO', // Osh + '09' => 'B', // Batken + + // [invalid code] + '05' => 'GO', // Osh + ], + 'KH' => [ + '02' => '3', + '03' => '4', + '04' => '5', + '05' => '6', + '07' => '8', + '08' => '9', + '09' => '10', + '10' => '11', + '12' => '15', + '13' => '13', + '14' => '14', + '17' => '19', + '18' => '20', + '19' => '21', + '22' => '12', + '23' => '16', + '25' => '1', + '28' => '18', + '29' => '2', + '30' => '24', + + // invalid codes [used by maxmind] (mapped based on the names) + '01' => '2', // Batdambang + '06' => '7', // Kampot + '11' => '12', // Phnum Penh + '15' => '16', // Ratanakiri Kiri + '16' => '17', // Siem Reap + ], + 'KI' => [ + '01' => 'G', + '02' => 'L', + '03' => 'P', + ], + 'KM' => [ + '01' => 'A', + '02' => 'G', + '03' => 'M', + ], + 'KN' => [ + '01' => '01', + '02' => '02', + '03' => '03', + '04' => '04', + '05' => '05', + '06' => '06', + '07' => '07', + '08' => '08', + '09' => '09', + '10' => '10', + '11' => '11', + '12' => '12', + '13' => '13', + '15' => '15', + ], + 'KP' => [ + // mapping based on names an wikipedia pages + '01' => '04', // Chagang-do + '03' => '08', // Hamgyong-namdo + '06' => '05', // Hwanghae-namdo + '07' => '09', // Hwanghae-bukto + '08' => '06', // Kaesong-si + '09' => '07', // Kangwon-do + '11' => '09', // P'yongan-bukto + '12' => '01', // P'yongyang-si + '13' => '10', // Yanggang-do + '14' => '14', // Namp'o-si + '15' => '02', // P'yongan-namdo + '17' => '09', // Hamgyong-bukto + '18' => '13', // Najin Sonbong-si + ], + 'KR' => [ + '01' => '49', + '03' => '45', + '05' => '43', + '06' => '42', + '10' => '26', + '11' => '11', + '12' => '28', + '13' => '41', + '14' => '47', + '15' => '27', + '16' => '46', + '17' => '44', + '18' => '29', + '19' => '30', + '20' => '48', + '21' => '31', + ], + 'KW' => [ + '01' => 'AH', + '02' => 'KU', + '05' => 'JA', + '07' => 'FA', + '08' => 'HA', + '09' => 'MU', + ], + 'KY' => [ + // Cayman Islands do not have an ISO regions + '01' => '', + '02' => '', + '03' => '', + '04' => '', + '05' => '', + '06' => '', + '07' => '', + '08' => '', + ], + 'KZ' => [ + '01' => 'ALM', + '02' => 'ALA', + '03' => 'AKM', + '04' => 'AKT', + '05' => 'AST', + '06' => 'ATY', + '07' => 'ZAP', + '08' => 'BAY', + '09' => 'MAN', + '10' => 'YUZ', + '11' => 'PAV', + '12' => 'KAR', + '13' => 'KUS', + '14' => 'KZY', + '15' => 'VOS', + '16' => 'SEV', + '17' => 'ZHA', + ], + 'LA' => [ + '01' => 'AT', + '02' => 'CH', + '03' => 'HO', + '07' => 'OU', + '13' => 'XA', + '14' => 'XI', + '17' => 'LP', + + // valid codes [not used by maxmind] + '18' => 'PH', // Phôngsali Province + '19' => 'SL', // Salavan Province + '20' => 'SV', // Savannakhét Province + '22' => 'BK', // Bokèo Province + '23' => 'BL', // Bolikhamxai Province + '24' => 'VI', // Viangchan Municipality + '25' => 'XS', // Xaisômboun Special Zone + '26' => 'XE', // Xékong Province + '27' => 'VI', // Vientiane Province + + // invalid codes [used by maxmind] (mapped based on the names) + '04' => 'KH', //Khammouan + '05' => 'LM', //Louang Namtha + '08' => 'PH', //Phongsali + '09' => 'SL', //Saravan + '10' => 'SV', //Savannakhet + '11' => 'VI', //Vientiane + ], + 'LB' => [ + '04' => 'BA', + '05' => 'JL', + '06' => 'JA', + '07' => 'NA', + '08' => 'BI', + '09' => 'AS', + '10' => 'AK', + '11' => 'BH', + + // invalid codes [used by maxmind] + '01' => 'BI', // Beqaa + '02' => 'JA', // Al Janub + '03' => 'AS', // Liban-Nord + ], + 'LC' => [ + '01' => '01', + '02' => '', // [split up] + '03' => '02', + '04' => '03', + '05' => '05', + '06' => '06', + '07' => '07', + '08' => '08', + '09' => '10', + '10' => '11', + '11' => '', // [split up] + ], + 'LI' => [ + '01' => '01', + '02' => '02', + '03' => '03', + '04' => '04', + '05' => '05', + '06' => '06', + '07' => '07', + '08' => '08', + '09' => '09', + '10' => '10', + '11' => '11', + + // codes screwed up by maxmind + // Based on the names they seem to be from Liberia, so remove them + '21' => '', // Gbarpolu + '22' => '', // River Gee + ], + 'LK' => [ + // valid FIPS codes [not used by maxmind] + '01' => '52', // Amparai District + '02' => '71', // Anuradhapura District + '03' => '81', // Badulla District + '04' => '51', // Batticaloa District + '06' => '31', // Galle District + '07' => '33', // Hambantota District + '09' => '13', // Kalutara District + '10' => '21', // Kandy District + '11' => '92', // Kegalla District + '12' => '61', // Kurunegala District + '14' => '22', // Matale District + '15' => '32', // Matara District + '16' => '82', // Moneragala District + '17' => '23', // Nuwara Eliya District + '18' => '72', // Polonnaruwa District + '19' => '62', // Puttalam District + '20' => '91', // Ratnapura District + '21' => '53', // Trincomalee District + '23' => '11', // Colombo District + '24' => '12', // Gampaha District + '25' => '41', // Jaffna District + '26' => '43', // Mannar District + '27' => '45', // Mullaittivu District + '28' => '44', // Vavuniya District + + // invalid codes [use by maxmind] + '29' => '2', // Central + '30' => '7', // North Central + '32' => '6', // North Western + '33' => '9', // Sabaragamuwa + '34' => '3', // Southern + '35' => '8', // Uva + '36' => '1', // Western + '37' => '5', // Eastern + '38' => '4', // Northern + ], + 'LR' => [ + '01' => 'BG', + '09' => 'NI', + '10' => 'SI', + '11' => 'GB', + '12' => 'CM', + '13' => 'MY', + '14' => 'MO', + '17' => 'MG', + '18' => 'RI', + '19' => 'GG', + '20' => 'LO', + '21' => 'GP', + '22' => 'RG', + + // valid codes [not used by maxmind] + '15' => 'BM', + '16' => 'GK', + + // invalid codes [used by maxmind] + '04' => 'CM', // Grand Cape Mount + '05' => 'LO', // Lofa + '06' => 'MY', // Maryland + '07' => 'MO', // Monrovia [capital city in region Montserrado] + ], + 'LS' => [ + '10' => 'D', + '11' => 'B', + '12' => 'C', + '13' => 'E', + '14' => 'A', + '15' => 'F', + '16' => 'J', + '17' => 'H', + '18' => 'G', + '19' => 'K', + ], + 'LT' => [ + '56' => 'AL', + '57' => 'KU', + '58' => 'KL', + '59' => 'MR', + '60' => 'PN', + '61' => 'SA', + '62' => 'TA', + '63' => 'TE', + '64' => 'UT', + '65' => 'VL', + ], + 'LU' => [ + // completely reorganized in 2015 + '01' => '', + '02' => '', + '03' => '', + ], + 'LV' => [ + // mapping based on the names on wikipedia + '01' => '002', // Aizkraukles + '02' => '007', // Aluksnes + '03' => '015', // Balvu + '04' => '016', // Bauskas + '05' => '022', // Cesu + '06' => 'DGV', // Daugavpils + '07' => '025', // Daugavpils + '08' => '026', // Dobeles + '09' => '033', // Gulbenes + '10' => '042', // Jekabpils + '11' => 'JEL', // Jelgava + '12' => '041', // Jelgavas + '13' => 'JUR', // Jurmala + '14' => '047', // Kraslavas + '15' => '050', // Kuldigas + '16' => 'LPX', // Liepaja + '17' => '', // Liepajas [splitted in 2009 and not mappable] + '18' => '054', // Limbazu + '19' => '058', // Ludzas + '20' => '059', // Madonas + '21' => '067', // Ogres + '22' => '073', // Preilu + '23' => 'REZ', // Rezekne + '24' => '077', // Rezeknes + '25' => 'RIX', // Riga + '26' => '', // Rigas [splitted in 2009 and not mappable] + '27' => '088', // Saldus + '28' => '097', // Talsu + '29' => '099', // Tukuma + '30' => '101', // Valkas + '31' => 'VMR', // Valmieras + '32' => 'VEN', // Ventspils + '33' => '106', // Ventspils + ], + 'LY' => [ + '03' => 'JI', // Al Aziziyah [part of Jafara since 2009] + '05' => 'JU', // Al Jufrah + '08' => 'KF', // Al Kufrah + '13' => 'WS', // Ash Shati' + '30' => 'MQ', // Murzuq + '34' => 'SB', // Sabha + '41' => 'MQ', // Tarhunah [occupied by Tarhuna wa Msalata and transformed to Murqub in 2009] + '42' => 'BU', // Tubruq + '45' => 'MI', // Zlitan [part of Misrata since 2009] + '47' => 'WA', // Ajdabiya [included in Al Wāḩāt since 2007] + '48' => 'MJ', // Al Fatih [some parts are in Marj] + '49' => 'JA', // Al Jabal al Akhdar + '50' => 'MB', // Al Khums [seems to be part of Al Marqab] + '51' => 'NQ', // An Nuqat al Khams + '52' => 'WD', // Awbari [part of Wadi al Hayaa] + '53' => 'ZA', // Az Zawiyah + '54' => 'BA', // Banghazi + '55' => 'DR', // Darnah + '56' => 'NL', // Ghadamis [part of Nalut] + '57' => 'JG', // Gharyan [part of Jabal al Gharbi since 2007] + '58' => 'MI', // Misratah + '59' => '', // Sawfajjin [split between Sirte and Misrata] + '60' => 'SR', // Surt + '61' => 'TB', // Tarabulus + '62' => '', // Yafran [split between Jabal al Gharbi and Nalut] + ], + 'MA' => [ + '45' => '08', + '46' => '05', + '47' => '11', + '48' => '06', + '49' => '07', + '50' => '09', + '51' => '10', + '52' => '02', + '53' => '14', + '54' => '04', + '55' => '13', + '56' => '12', + '57' => '01', + '58' => '03', + '59' => '15', + ], + 'MC' => [ + // there are no fips codes for Monaco + // those were used by maxind + '01' => 'CO', // La Condamine + '02' => 'MO', // Monaco + '03' => 'MC', // Monte-Carlo + ], + 'MD' => [ + '51' => 'GA', + '57' => 'CU', // Chisinau + '58' => 'SN', // Stinga Nistrului + '59' => 'AN', + '60' => 'BA', + '61' => 'BS', + '62' => 'BD', + '63' => 'BR', + '64' => 'CA', + '65' => 'CT', + '66' => 'CL', // Calarasi + '67' => 'CS', + '68' => 'CM', // Cimislia + '69' => 'CR', + '70' => 'DO', + '71' => 'DR', + '72' => 'DU', + '73' => 'ED', + '74' => 'FA', + '75' => 'FL', // Floresti + '76' => 'GL', + '77' => 'HI', + '78' => 'IA', + '79' => 'LE', + '80' => 'NI', + '81' => 'OC', + '82' => 'OR', + '83' => 'RE', + '84' => 'RI', + '85' => 'SI', + '86' => 'SD', + '87' => 'SO', + '88' => 'SV', + '89' => 'ST', + '90' => 'TA', // Taraclia + '91' => 'TE', + '92' => 'UN', // Ungheni + ], + 'MG' => [ + '01' => 'D', // Antsiranana + '02' => 'F', // Fianarantsoa + '03' => 'M', // Mahajanga + '04' => 'A', // Toamasina + '05' => 'T', // Antananarivo + '06' => 'U', // Toliara + ], + 'MK' => [ + '01' => '02', // Aracinovo + '02' => '55', // Bac [now part of Novaci] + '03' => '22', // Belcista [now Debarca] + '04' => '03', // Berovo + '05' => '04', // Bistrica [city in Bitola] + '06' => '04', // Bitola + '07' => '14', // Blatec [now part of Vinica] + '08' => '05', // Bogdanci + '09' => '80', // Bogomila [city in Caska] + '10' => '03', // Bogovinje + '11' => '07', // Bosilovo + '12' => '08', // Brvenica + '14' => '04', // Capari [city in Bitola] + '15' => '80', // Caska + '16' => '19', // Cegrane [city in Gostivar] + '19' => '81', // Cesinovo + '20' => '82', // Cucer-Sandevo + '21' => '21', // Debar + '22' => '23', // Delcevo + '23' => '72', // Delogozdi [city in Struga] + '24' => '25', // Demir Hisar + '25' => '24', // Demir Kapija + '26' => '53', // Dobrusevo [city in Moglia] + '27' => '19', // Dolna Banjica [city in Gostivar] + '28' => '27', // Dolneni + '30' => '40', // Drugovo [merged with Kicevo] + '31' => '76', // Dzepciste [city in Tetovo] + '33' => '18', // Gevgelija + '34' => '19', // Gostivar + '35' => '20', // Gradsko + '36' => '34', // Ilinden + '37' => '80', // Izvor [attached to Caska] + '38' => '35', // Jegunovce + '39' => '03', // Kamenjane [city in Bogovinje] + '40' => '37', // Karbinci + '41' => '85', // Karpos [now in Skopje] + '42' => '36', // Kavadarci + '43' => '40', // Kicevo + '44' => '85', // Kisela Voda [now in Skopje] + '45' => '', // Klecevce [attached to Klecevce and Staro Nagoricane] + '46' => '42', // Kocani + '47' => '41', // Konce + '48' => '85', // Kondovo [now in Skopje] + '49' => '36', // Konopiste [city in Kavadarci] + '50' => '58', // Kosel [city in Ohrid] + '51' => '43', // Kratovo + '52' => '44', // Kriva Palanka + '53' => '45', // Krivogastani + '54' => '46', // Krusevo + '55' => '73', // Kuklis [city in Strumica] + '56' => '04', // Kukurecani [city in Bitola] + '57' => '47', // Kumanovo + '58' => '72', // Labunista [city in Struga] + '59' => '48', // Lipkovo + '60' => '49', // Lozovo + '61' => '72', // Lukovo [city in Struga] + '62' => '51', // Makedonska Kamenica + '63' => '52', // Makedonski Brod + '64' => '50', // Mavrovi Anovi [city in Mavrovo i Rostuša] + '65' => '22', // Meseista [city in Debarca] + '66' => '18', // Miravci [city in Gevgelija] + '67' => '53', // Mogila + '68' => '73', // Murtino [splitted between Strumica and Bosilovo; major part in Strumica] + '69' => '54', // Negotino + '70' => '54', // Negotino-Polosko + '71' => '55', // Novaci + '72' => '56', // Novo Selo + '73' => '81', // Oblesevo + '74' => '58', // Ohrid + '75' => '47', // Orasac [city in Kumanovo] + '76' => '48', // Orizari [city in Lipkovo] + '77' => '40', // Oslomej [city in Kičevo] + '78' => '60', // Pehcevo + '79' => '59', // Petrovec + '80' => '61', // Plasnica + '81' => '64', // Podares [city in Rodavis] + '82' => '62', // Prilep + '83' => '63', // Probistip + '84' => '64', // Radovis + '85' => '65', // Rankovce + '86' => '66', // Resen + '87' => '67', // Rosoman + '88' => '50', // Rostusa [city in Mavrovo i Rostuša] + '89' => '', // Samokov [city in Sofia] ????????????????????? + '90' => '85', // Saraj [now in Skopje] + '91' => '76', // Sipkovica [city in Tetovo] + '92' => '70', // Sopiste + '93' => '25', // Sopotnica [city in Demir Hisar] + '94' => '19', // Srbinovo [city in Gostivar] + '95' => '55', // Staravina [city in Novaci] + '96' => '26', // (Star) Dojran + '97' => '71', // Staro Nagoricane + '98' => '83', // Stip + '99' => '72', // Struga + 'A1' => '73', // Strumica + 'A2' => '73', // Studenicani + 'A3' => '85', // Suto Orizari [now in Skopje] + 'A4' => '69', // Sveti Nikole + 'A5' => '75', // Tearce + 'A6' => '76', // Tetovo + 'A7' => '62', // Topolcani [city in Prilep] + 'A8' => '10', // Valandovo + 'A9' => '11', // Vasilevo + 'B1' => '16', // Veles + 'B2' => '72', // Velesta [city in Struga] + 'B3' => '12', // Vevcani + 'B4' => '14', // Vinica + 'B5' => '62', // Vitoliste [city in Prilep] + 'B6' => '40', // Vranestica [now in Kicevo] + 'B7' => '16', // Vrapciste + 'B8' => '35', // Vratnica [city in Jegunovce] + 'B9' => '19', // Vrutok [city in Gostivar] + 'C1' => '40', // Zajas [now in Kicevo] + 'C2' => '32', // Zelenikovo + 'C3' => '30', // Zelino + 'C4' => '27', // Zitose [city in Dolneni] + 'C5' => '63', // Zletovo [city in Probistip] + 'C6' => '33', // Zrnovci + + // invalid codes [used by maxmind] + '13' => '85', // Cair [now in Skopje] + '17' => '78', // Centar + '18' => '78', // Centar Zupa + '29' => '85', // Dorce Petrov [now in Skopje] + '32' => '85', // Gazi Baba [now in Skopje] + 'C8' => '85', // Cair [now in Skopje] + 'C9' => '80', // Caska + 'D2' => '21', // Debar + 'D3' => '25', // Demir Hisar + 'D4' => '19', // Gostivar + 'D5' => '35', // Jegunovce + 'D6' => '36', // Kavadarci + 'D7' => '47', // Kumanovo + 'D8' => '52', // Makedonski Brod + 'E2' => '58', // Ohrid + 'E3' => '62', // Prilep + 'E5' => '26', // Dojran + 'E6' => '72', // Struga + 'E7' => '73', // Strumica + 'E8' => '76', // Tetovo + 'E9' => '10', // Valandovo + 'F1' => '13', // Veles + 'F2' => '85', // Aerodrom [now in Skopje] + ], + 'ML' => [ + '01' => 'BKO', + '03' => '1', + '04' => '5', + '05' => '4', + '06' => '3', + '07' => '2', + '08' => '6', + '09' => '7', + '10' => '8', + ], + 'MM' => [ + '01' => '16', // Rakhine State + '02' => '14', // Chin State + '03' => '07', // Irrawaddy + '04' => '11', // Kachin State + '05' => '13', // Karan State + '06' => '12', // Kayah State + '08' => '04', // Mandalay + '10' => '01', // Sagaing + '11' => '17', // Shan State + '12' => '05', // Tenasserim + '13' => '15', // Mon State + '17' => '06', // Yangon + + // invalid codes [used by maxmind] + '07' => '03', // Magwe + '09' => '02', // Pegu + '14' => '06', // Rangoon + + // valid codes [not used by maxmind] + '15' => '03', // Magway Division + '16' => '02', // Bago Division + ], + 'MN' => [ + '01' => '073', // Arhangay + '02' => '069', // Bayanhongor + '03' => '071', // Bayan-Olgiy + '06' => '061', // Dornod + '07' => '063', // Dornogovi + '08' => '059', // Dundgovi + '09' => '057', // Dzavhan + '10' => '065', // Govi-Altay + '11' => '039', // Hentiy + '12' => '043', // Hovd + '13' => '041', // Hovsgol + '14' => '053', // Omnogovi + '15' => '055', // Ovorhangay + '16' => '049', // Selenge + '17' => '051', // Suhbaatar + '18' => '047', // Tov + '19' => '046', // Uvs + '20' => '1', // Ulaanbaatar + '21' => '067', // Bulgan + '23' => '037', // Darhan-Uul + '24' => '064', // Govisumber + '25' => '035', // Orhon + + // invalid codes [used by maxmind] + '05' => '037', // Darhan + '22' => '035', // Erdenet [city in Orkhon] + ], + 'MO' => [ + // No ISO codes assigned for Macau + '01' => '', // Ilhas + '02' => '', // Macau + ], + 'MR' => [ + '01' => '01', + '02' => '02', + '03' => '03', + '04' => '04', + '05' => '05', + '06' => '06', + '07' => '07', + '08' => '08', + '09' => '09', + '10' => '10', + '11' => '11', + '12' => '12', + ], + 'MS' => [ + // No ISO codes assigned for Montserrat + '01' => '', + '02' => '', + '03' => '', + ], + 'MU' => [ + '12' => 'BL', + '13' => 'FL', + '14' => 'GP', + '15' => 'MO', + '16' => 'PA', + '17' => 'PW', + '18' => 'PL', + '19' => 'RR', + '20' => 'SA', + '21' => 'AG', + '22' => 'CC', + '23' => 'RO', + ], + 'MV' => [ + '01' => '01', + '05' => '05', + '30' => '02', + '31' => '20', + '32' => '17', + '33' => '14', + '34' => '27', + '35' => '28', + '36' => '07', + '37' => '23', + '38' => '26', + '39' => '03', + '40' => 'MLE', + '41' => '12', + '42' => '29', + '43' => '25', + '44' => '13', + '45' => '24', + '46' => '08', + '47' => '04', + ], + 'MW' => [ + '02' => 'CK', // Chikwawa + '03' => 'CR', // Chiradzulu + '04' => 'CT', // Chitipa + '05' => 'TH', // Thyolo + '06' => 'DE', // Dedza + '07' => 'DO', // Dowa + '08' => 'KR', // Karonga + '09' => 'KS', // Kasungu + '11' => 'LI', // Lilongwe + '12' => 'MG', // Mangochi + '13' => 'MC', // Mchinji + '15' => 'MZ', // Mzimba + '16' => 'NU', // Ntcheu + '17' => 'NB', // Nkhata Bay + '18' => 'NK', // Nkhotakota + '19' => 'NS', // Nsanje + '20' => 'NI', // Ntchisi + '21' => 'RU', // Rumphi + '22' => 'SA', // Salima + '23' => 'ZO', // Zomba + '24' => 'BL', // Blantyre + '25' => 'MW', // Mwanza + '26' => 'BA', // Balaka + '27' => 'LK', // Likoma + '28' => 'MH', // Machinga + '29' => 'MU', // Mulanje + '30' => 'PH', // Phalombe + ], + 'MX' => [ + '01' => 'AGU', + '02' => 'BCN', + '03' => 'BCS', + '04' => 'CAM', + '05' => 'CHP', + '06' => 'CHH', + '07' => 'COA', + '08' => 'COL', + '09' => 'CMX', + '10' => 'DUR', + '11' => 'GUA', + '12' => 'GRO', + '13' => 'HID', + '14' => 'JAL', + '15' => 'MEX', + '16' => 'MIC', + '17' => 'MOR', + '18' => 'NAY', + '19' => 'NLE', + '20' => 'OAX', + '21' => 'PUE', + '22' => 'QUE', + '23' => 'ROO', + '24' => 'SLP', + '25' => 'SIN', + '26' => 'SON', + '27' => 'TAB', + '28' => 'TAM', + '29' => 'TLA', + '30' => 'VER', + '31' => 'YUC', + '32' => 'ZAC', + ], + 'MY' => [ + '01' => '01', + '02' => '02', + '03' => '03', + '04' => '04', + '05' => '05', + '06' => '06', + '07' => '08', + '08' => '09', + '09' => '07', + '11' => '13', + '12' => '10', + '13' => '11', + '14' => '14', + '15' => '15', + '16' => '12', + '17' => '16', + ], + 'MZ' => [ + '01' => 'P', + '02' => 'G', + '03' => 'I', + '04' => 'L', + '05' => 'S', + '06' => 'N', + '07' => 'A', + '08' => 'T', + '09' => 'Q', + '10' => 'B', + '11' => 'MPM', + ], + 'NA' => [ + '21' => 'KH', // Windhoek [capital city of Khomas] + '28' => 'CA', // Caprivi (now named Zambezi) + '29' => 'ER', // Erongo + '30' => 'HA', // Hardap + '31' => 'KA', // Karas + '32' => 'KU', // Kunene + '33' => 'OW', // Ohangwena + '34' => '', // Okavango [now splitted in Kavango East and West] + '35' => 'OH', // Omaheke + '36' => 'OS', // Omusati + '37' => 'ON', // Oshana + '38' => 'OT', // Oshikoto + '39' => 'OD', // Otjozondjupa + + // invalid codes [used by maxmind] + '01' => 'KA', // Bethanien [city in Karas] + '02' => '', // Caprivi Oos [old region, not mappable] + '03' => '', // Boesmanland [old region, not mappable] + '04' => 'OH', // Gobabis [capital of Omaheke] + '05' => 'OD', // Grootfontein [city in Otjozondjupa] + '06' => 'KU', // Kaokoland [now part of Kunene] + '07' => 'ER', // Karibib [city in Erongo] + '08' => 'KA', // Keetmanshoop [city in Karas] + '09' => 'KA', // Luderitz [city in Karas] + '10' => 'HA', // Maltahohe [city in Hardap] + '11' => 'OD', // Okahandja [city in Otjozondjupa] + '12' => 'ER', // Omaruru [city in Erongo] + '13' => 'OD', // Otjiwarongo [capital in Otjozondjupa] + '14' => 'KU', // Outjo [city in Kunene] + '15' => '', // Owambo [old region, not mappable] + '16' => 'HA', // Rehoboth [city in Hardap] + '17' => 'ER', // Swakopmund [city in Erongo] + '18' => 'OT', // Tsumeb [city in Oshikoto] + '20' => 'KA', // Karasburg [city in Karas] + '22' => '', // Damaraland [old region, not mappable] + '23' => '', // Hereroland Oos [old region, not mappable] + '24' => '', // Hereroland Wes [old region, not mappable] + '25' => '', // Kavango [now splitted in East and West] + '26' => 'HA', // Mariental [city in Hardap] + '27' => '', // Namaland [old region, not mappable] + ], + 'NE' => [ + '01' => '1', + '02' => '2', + '03' => '3', + '04' => '4', + '06' => '5', + '07' => '7', + '08' => '8', + + // valid codes [not used by maxmind] + '09' => '6', + + // invalid codes [not used by maxmind] + '05' => '8', + ], + 'NG' => [ + '05' => 'LA', // Lagos + '11' => 'FC', // Federal Capital Territory + '16' => 'OG', // Ogun + '21' => 'AK', // Akwa Ibom + '22' => 'CR', // Cross River + '23' => 'KD', // Kaduna + '24' => 'KT', // Katsina + '25' => 'AN', // Anambra + '26' => 'BE', // Benue + '27' => 'BO', // Borno + '28' => 'IM', // Imo + '29' => 'KN', // Kano + '30' => 'KW', // Kwara + '31' => 'NI', // Niger + '32' => 'OY', // Oyo + '35' => 'AD', // Adamawa + '36' => 'DE', // Delta + '37' => 'ED', // Edo + '39' => 'JI', // Jigawa + '40' => 'KE', // Kebbi + '41' => 'KO', // Kogi + '42' => 'OS', // Osun + '43' => 'TA', // Taraba + '44' => 'YO', // Yobe + '45' => 'AB', // Abia + '46' => 'BA', // Bauchi + '47' => 'EN', // Enugu + '48' => 'ON', // Ondo + '49' => 'PL', // Plateau + '50' => 'RI', // Rivers + '51' => 'SO', // Sokoto + '52' => 'BY', // Bayelsa + '53' => 'EB', // Ebonyi + '54' => 'EK', // Ekiti + '55' => 'GO', // Gombe + '56' => 'NA', // Nassarawa + '57' => 'ZA', // Zamfara + ], + 'NI' => [ + '01' => 'BO', + '02' => 'CA', + '03' => 'CI', + '04' => 'CO', + '05' => 'ES', + '06' => 'GR', + '07' => 'JI', + '08' => 'LE', + '09' => 'MD', + '10' => 'MN', + '11' => 'MS', + '12' => 'MT', + '13' => 'NS', + '14' => 'SJ', + '15' => 'RI', + '17' => 'AN', + '18' => 'AS', + + // invalid codes [used by maxmind] + '16' => '', // Zelaya + ], + 'NL' => [ + '01' => 'DR', + '02' => 'FR', + '03' => 'GE', + '04' => 'GR', + '05' => 'LI', + '06' => 'NB', + '07' => 'NH', + '09' => 'UT', + '10' => 'ZE', + '11' => 'ZH', + '15' => 'OV', + '16' => 'FL', + ], + 'NO' => [ + '01' => '02', + '02' => '09', + '04' => '06', + '05' => '20', + '06' => '04', + '07' => '12', + '08' => '15', + '09' => '18', + '10' => '17', + '11' => '05', + '12' => '03', + '13' => '01', + '14' => '11', + '15' => '14', + '16' => '16', + '17' => '08', + '18' => '19', + '19' => '10', + '20' => '07', + ], + 'NP' => [ + '01' => 'BA', // Bagmati + '02' => 'BH', // Bheri + '03' => 'DH', // Dhawalagiri + '04' => 'GA', // Gandaki + '05' => 'JA', // Janakpur + '06' => 'KA', // Karnali + '07' => 'KO', // Kosi + '08' => 'LU', // Lumbini + '09' => 'MA', // Mahakali + '10' => 'ME', // Mechi + '11' => 'NA', // Narayani + '12' => 'RA', // Rapti + '13' => 'SA', // Sagarmatha + '14' => 'SE', // Seti + ], + 'NR' => [ + '01' => '01', + '02' => '02', + '03' => '03', + '04' => '04', + '05' => '05', + '06' => '06', + '07' => '07', + '08' => '08', + '09' => '09', + '10' => '10', + '11' => '11', + '12' => '12', + '13' => '13', + '14' => '14', + ], + 'NZ' => [ + '10' => 'CIT', + 'E7' => 'AUK', + 'E8' => 'BOP', + 'E9' => 'CAN', + 'F1' => 'GIS', + 'F2' => 'HKB', + 'F3' => 'MWT', + 'F4' => 'MBH', + 'F5' => 'NSN', + 'F6' => 'NTL', + 'F7' => 'OTA', + 'F8' => 'STL', + 'F9' => 'TKI', + 'G1' => 'WKO', + 'G2' => 'WGN', + 'G3' => 'WTC', + ], + 'OM' => [ + '01' => 'DA', // Ad Dakhiliyah + '02' => '', // Al Batinah [splitted in two] + '03' => 'WU', // Al Wusta + '04' => '', // Ash Sharqiyah + '06' => 'MA', // Masqat [splitted in two] + '07' => 'MU', // Musandam + '08' => 'ZU', // Zufar + + // valid codes [not used by maxmind] + '09' => 'ZA', // Ad Dhahirah + '10' => 'BU', // Al Buraimi + + // invalid codes [used by maxmind] + '05' => 'ZA', // Az Zahirah + ], + 'PA' => [ + '01' => '1', + '02' => '4', + '03' => '2', + '04' => '3', + '05' => '5', + '06' => '6', + '07' => '7', + '08' => '8', + '09' => 'KY', + '10' => '9', + ], + 'PE' => [ + '01' => 'AMA', + '02' => 'ANC', + '03' => 'APU', + '04' => 'ARE', + '05' => 'AYA', + '06' => 'CAJ', + '07' => 'CAL', + '08' => 'CUS', + '09' => 'HUV', + '10' => 'HUC', + '11' => 'ICA', + '12' => 'JUN', + '13' => 'LAL', + '14' => 'LAM', + '15' => 'LIM', + '16' => 'LOR', + '17' => 'MDD', + '18' => 'MOQ', + '19' => 'PAS', + '20' => 'PIU', + '21' => 'PUN', + '22' => 'SAM', + '23' => 'TAC', + '24' => 'TUM', + '25' => 'UCA', + ], + 'PG' => [ + '01' => 'CPM', + '02' => 'GPK', + '03' => 'MBA', + '04' => 'NPP', + '05' => 'SHM', + '06' => 'WPD', + '07' => 'NSB', + '08' => 'CPK', + '09' => 'EHG', + '10' => 'EBR', + '11' => 'ESW', + '12' => 'MPM', + '13' => 'MRL', + '14' => 'MPL', + '15' => 'NIK', + '16' => 'WHM', + '17' => 'WBK', + '18' => 'SAN', + '19' => 'EPW', + '20' => 'NCD', + ], + 'PH' => [ + '01' => 'ABR', // Abra + '02' => 'AGN', // Agusan del Norte + '03' => 'AGS', // Agusan del Sur + '04' => 'AKL', // Aklan + '05' => 'ALB', // Albay + '06' => 'ANT', // Antique + '07' => 'BAN', // Bataan + '08' => 'BTN', // Batanes + '09' => 'BTG', // Batangas + '10' => 'BEN', // Benguet + '11' => 'BOH', // Bohol + '12' => 'BUK', // Bukidnon + '13' => 'BUL', // Bulacan + '14' => 'CAG', // Cagayan + '15' => 'CAN', // Camarines Norte + '16' => 'CAS', // Camarines Sur + '17' => 'CAM', // Camiguin + '18' => 'CAP', // Capiz + '19' => 'CAT', // Catanduanes + '20' => 'CAV', // Cavite + '21' => 'CEB', // Cebu + '22' => 'BAS', // Basilan + '23' => 'EAS', // Eastern Samar + '24' => 'DAV', // Davao + '25' => 'DAS', // Davao del Sur + '26' => 'DAO', // Davao Oriental + '27' => 'IFU', // Ifugao + '28' => 'ILN', // Ilocos Norte + '29' => 'ILS', // Ilocos Sur + '30' => 'ILI', // Iloilo + '31' => 'ISA', // Isabela + '32' => '', // Kalinga-Apayao [splitted in two] + '33' => 'LAG', // Laguna + '34' => 'LAN', // Lanao del Norte + '35' => 'LAS', // Lanao del Sur + '36' => 'LUN', // La Union + '37' => 'LEY', // Leyte + '38' => 'MAD', // Marinduque + '39' => 'MAS', // Masbate + '40' => 'MDC', // Mindoro Occidental + '41' => 'MDR', // Mindoro Oriental + '42' => 'MSC', // Misamis Occidental + '43' => 'MSR', // Misamis Oriental + '44' => 'MOU', // Mountain + '45' => 'NEC', // Negros Occidental + '46' => 'NER', // Negros Oriental + '47' => 'NUE', // Nueva Ecija + '48' => 'NUV', // Nueva Vizcaya + '49' => 'PLW', // Palawan + '50' => 'PAM', // Pampanga + '51' => 'PAN', // Pangasinan + '53' => 'RIZ', // Rizal + '54' => 'ROM', // Romblon + '55' => 'WSA', // Samar + '56' => 'MAG', // Maguindanao + '57' => 'NCO', // North Cotabato + '58' => 'SOR', // Sorsogon + '59' => 'SLE', // Southern Leyte + '60' => 'SLU', // Sulu + '61' => 'SUN', // Surigao del Norte + '62' => 'SUR', // Surigao del Sur + '63' => 'TAR', // Tarlac + '64' => 'ZMB', // Zambales + '65' => 'ZAN', // Zamboanga del Norte + '66' => 'ZAS', // Zamboanga del Sur + '67' => 'NSA', // Northern Samar + '68' => 'QUI', // Quirino + '69' => 'SIG', // Siquijor + '70' => 'SCO', // South Cotabato + '71' => 'SUK', // Sultan Kudarat + '72' => 'TAW', // Tawitawi + 'A1' => 'PAM', // Angeles [city in Pamganga] + 'A2' => 'NEC', // Bacolod [city in Negros Occidental] + 'A3' => 'NEC', // Bago [city in Negros Occidental] + 'A4' => 'BEN', // Baguio [city in Benguet] + 'A5' => 'NER', // Bais [city in Negros Oriental] + 'A6' => '09', // Basilan City [city in Zamboanga Peninsula] + 'A7' => 'BTG', // Batangas City [capital of Batangas] + 'A8' => 'AGN', // Butuan [city in Agusan del Norte] + 'A9' => 'NUE', // Cabanatuan [city in Nueva Ecija] + 'B1' => 'NEC', // Cadiz [city in Negros Occidental] + 'B2' => 'MSR', // Cagayan de Oro [city in Misamis Oriental] + 'B3' => 'WSA', // Calbayog [city in Samar] + 'B4' => '00', // Caloocan [part of National Capital Region] + 'B5' => 'NER', // Canlaon [city in Negros Oriental] + 'B6' => 'CAV', // Cavite City [capital of Cavite] + 'B7' => 'CEB', // Cebu City [capital of Cebu] + 'B8' => 'MAG', // Cotabato [city in Maguindanao] + 'B9' => 'PAN', // Dagupan [city in Pangasinan] + 'C1' => 'CEB', // Danao [city in Cebu] + 'C2' => 'ZAN', // Dapitan [city in Zamboanga del Norte] + 'C3' => 'DAS', // Davao City [city in Davao del Sur] + 'C4' => 'ZAN', // Dipolog [city in Zamboanga del Norte] + 'C5' => 'NER', // Dumaguete [city in Negros Oriental] + 'C6' => 'SCO', // General Santos [city in South Cotabato] + 'C7' => 'MSR', // Gingoog [city in Misamis Oriental] + 'C8' => 'LAN', // Iligan [city in Lanao del Norte] + 'C9' => 'ILI', // Iloilo City [capital of Iloilo] + 'D1' => 'CAS', // Iriga [city in Camarines Sur] + 'D2' => 'NEC', // La Carlota [city in Negros Occidental] + 'D3' => 'ILN', // Laoag [city in Ilocos Norte] + 'D4' => 'CEB', // Lapu-Lapu [city in Cebu] + 'D5' => 'ALB', // Legaspi [city in Albay] + 'D6' => 'BTG', // Lipa [city in Batangas] + 'D7' => 'QUE', // Lucena [city in Quezon] + 'D8' => 'CEB', // Mandaue [city in Cebu] + 'D9' => '00', // Manila [part of National Capital Region] + 'E1' => 'LAS', // Marawi [city in Lanao del Sur] + 'E2' => 'CAS', // Naga [city in Camarines Sur] + 'E3' => 'ZMB', // Olongapo [city in Zambales] + 'E4' => 'LEY', // Ormoc [city in Leyte] + 'E5' => 'MSC', // Oroquieta [city in Misamis Occidental] + 'E6' => 'MSC', // Ozamis [city in Misamis Occidental] + 'E7' => 'ZAS', // Pagadian [city in Zamboanga del Sur] + 'E8' => 'NUE', // Palayan [city in Nueva Ecija] + 'E9' => '00', // Pasay [part of National Capital Region] + 'F1' => 'PLW', // Puerto Princesa [city in Palawan] + 'F2' => '00', // Quezon City [part of National Capital Region] + 'F3' => 'CAP', // Roxas [city in Capiz] + 'F4' => 'NEC', // San Carlos [city in Negros Occidental] + 'F5' => 'PAN', // San Carlos [city in Pangasinan] + 'F6' => 'NUE', // San Jose [city in Nueva Ecija] + 'F7' => 'LAG', // San Pablo [city in Laguna] + 'F8' => 'NEC', // Silay [city in Negros Occidental] + 'F9' => 'SUN', // Surigao [city in Surigao del Norte] + 'G1' => 'LEY', // Tacloban [city in Leyte] + 'G2' => 'CAV', // Tagaytay [city in Cavite] + 'G3' => 'BOH', // Tagbilaran [city in Bohol] + 'G4' => 'MSC', // Tangub [city in Misamis Occidental] + 'G5' => 'CEB', // Toledo [city in Cebu] + 'G6' => 'CAV', // Trece Martires [city in Cavite] + 'G7' => 'ZAS', // Zamboanga [city in Zamboanga del Sur] + 'G8' => 'AUR', // Aurora + 'H2' => 'QUE', // Quezon + 'H3' => 'NEC', // Negros Occidental + + // invalid codes [used by maxmind] + 'H9' => 'BIL', // Biliran + 'I6' => 'COM', // Compostela Valley + 'I7' => 'DAV', // Davao del Norte + 'J3' => 'GUI', // Guimaras + 'J4' => 'NEC', // Himamaylan [city in Negros Occidental] + 'J7' => 'KAL', // Kalinga + 'K1' => '00', // Las Pinas [part of National Capital Region] + 'K5' => '00', // Malabon [part of National Capital Region] + 'K6' => 'BUK', // Malaybalay [city in Bukidnon] + 'L4' => '00', // Muntinlupa [part of National Capital Region] + 'L5' => '00', // Navotas [part of National Capital Region] + 'L7' => '00', // Paranaque [part of National Capital Region] + 'L9' => '', // Passi + 'P1' => 'ZMB', // Zambales + 'M5' => 'PAM', // San Jose del Monte [city in Pampanga] + 'M6' => '', // San Juan [the are many cities with this name] + 'M8' => '', // Santiago [the are 3 cities with this name] + 'M9' => 'SAR', // Sarangani + 'N1' => 'NEC', // Sipalay [city in Negros Occidental] + 'N3' => 'SUN', // Surigao del Norte + 'P2' => 'ZAS', // Zamboanga [city in Zamboanga del Sur] + + ], + 'PK' => [ + '01' => 'TA', + '02' => 'BA', + '03' => 'KP', + '04' => 'PB', + '05' => 'SD', + '06' => 'JK', + '07' => 'GB', + '08' => 'IS', + ], + 'PL' => [ + '72' => 'DS', + '73' => 'KP', + '74' => 'LD', + '75' => 'LU', + '76' => 'LB', + '77' => 'MA', + '78' => 'MZ', + '79' => 'OP', + '80' => 'PK', + '81' => 'PD', + '82' => 'PM', + '83' => 'SL', + '84' => 'SK', + '85' => 'WN', + '86' => 'WP', + '87' => 'ZP', + ], + 'PS' => [ + // completely new regions + 'GZ' => '', // Gaza + 'WE' => '', // West Bank + ], + 'PT' => [ + '02' => '01', + '03' => '02', + '04' => '03', + '05' => '04', + '06' => '05', + '07' => '06', + '08' => '07', + '09' => '08', + '10' => '30', + '11' => '09', + '13' => '10', + '14' => '11', + '16' => '12', + '17' => '13', + '18' => '14', + '19' => '15', + '20' => '16', + '21' => '17', + '22' => '18', + '23' => '20', + ], + 'PY' => [ + '01' => '10', + '02' => '13', + '04' => '5', + '05' => '6', + '06' => '11', + '07' => '1', + '08' => '3', + '10' => '4', + '11' => '7', + '12' => '8', + '13' => '12', + '15' => '9', + '16' => '15', + '17' => '2', + '19' => '14', + '22' => 'ASU', + '23' => '16', + '24' => '19', + ], + 'QA' => [ + '01' => 'DA', // Ad Dawhah + '02' => 'KH', // Al Ghuwariyah [city in Al Khawr] + '03' => 'SH', // Al Jumaliyah [city in Ash Shīḩānīyah] + '04' => 'KH', // Al Khawr + '06' => 'RA', // Ar Rayyan + '08' => 'MS', // Madinat ach Shamal + '09' => 'US', // Umm Salal + '10' => 'WA', // Al Wakrah + '11' => '', // Jariyan al Batnah [split into two] + '12' => 'WA', // Umm Sa'id [city in Al Wakrah] + + // invalid codes [used by maxmind] + '05' => 'WA', // Al Wakrah Municipality + ], + 'RO' => [ + '01' => 'AB', + '02' => 'AR', + '03' => 'AG', + '04' => 'BC', + '05' => 'BH', + '06' => 'BN', + '07' => 'BT', + '08' => 'BR', + '09' => 'BV', + '10' => 'B', + '11' => 'BZ', + '12' => 'CS', + '13' => 'CJ', + '14' => 'CT', + '15' => 'CV', + '16' => 'DB', + '17' => 'DJ', + '18' => 'GL', + '19' => 'GJ', + '20' => 'HR', + '21' => 'HD', + '22' => 'IL', + '23' => 'IS', + '25' => 'MM', + '26' => 'MH', + '27' => 'MS', + '28' => 'NT', + '29' => 'OT', + '30' => 'PH', + '31' => 'SJ', + '32' => 'SM', + '33' => 'SB', + '34' => 'SV', + '35' => 'TR', + '36' => 'TM', + '37' => 'TL', + '38' => 'VS', + '39' => 'VL', + '40' => 'VN', + '41' => 'CL', + '42' => 'GR', + '43' => 'IF', + ], + 'RS' => [ + '01' => 'KM', // Kosovo + '02' => 'VO', // Vojvodina + ], + 'RU' => [ + '01' => 'AD', + '02' => 'ZAB', // Aginsky Buryatsky AO [part of Zabaykal'skiy kray] + '03' => 'AL', + '04' => 'ALT', + '05' => 'AMU', + '06' => 'ARK', + '07' => 'AST', + '08' => 'BA', + '09' => 'BEL', + '10' => 'BRY', + '11' => 'BU', + '12' => 'CE', + '13' => 'CHE', + '14' => 'ZAB', // Chita [part of Zabaykal'skiy kray] + '15' => 'CHU', + '16' => 'CU', + '17' => 'DA', + '19' => 'IN', + '20' => 'IRK', + '21' => 'IVA', + '22' => 'KB', + '23' => 'KGD', + '24' => 'KL', + '25' => 'KLU', + '27' => 'KC', + '28' => 'KR', + '29' => 'KEM', + '30' => 'KHA', + '31' => 'KK', + '32' => 'KHM', + '33' => 'KIR', + '34' => 'KO', + '37' => 'KOS', + '38' => 'KDA', + '40' => 'KGN', + '41' => 'KRS', + '42' => 'LEN', + '43' => 'LIP', + '44' => 'MAG', + '45' => 'ME', + '46' => 'MO', + '47' => 'MOS', + '48' => 'MOW', + '49' => 'MUR', + '50' => 'NEN', + '51' => 'NIZ', + '52' => 'NGR', + '53' => 'NVS', + '54' => 'OMS', + '55' => 'ORE', + '56' => 'ORL', + '57' => 'PNZ', + '59' => 'PRI', + '60' => 'PSK', + '61' => 'ROS', + '62' => 'RYA', + '63' => 'SA', + '64' => 'SAK', + '65' => 'SAM', + '66' => 'SPE', + '67' => 'SAR', + '68' => 'SE', + '69' => 'SMO', + '70' => 'STA', + '71' => 'SVE', + '72' => 'TAM', + '73' => 'TA', + '74' => 'KYA', // Taymyr [part of Krasnoyarsk Krai] + '75' => 'TOM', + '76' => 'TUL', + '77' => 'TVE', + '78' => 'TYU', + '79' => 'TY', + '80' => 'UD', + '81' => 'ULY', + '83' => 'VLA', + '84' => 'VGG', + '85' => 'VLG', + '86' => 'VOR', + '87' => 'YAN', + '88' => 'YAR', + '89' => 'YEV', + '90' => 'PER', + '91' => 'KYA', + '92' => 'KAM', + + // valid codes [not used by maxmind] + '82' => 'IRK', // Ust'-Ordynskiy Buryatskiy [part of Irkutsk Oblast] + + // invalid codes [used by maymind] + '18' => 'KYA', // Evenk [part of Krasnoyarsk Krai] + '26' => 'KAM', // Kamchatka + '36' => 'KAM', // Koryak [part of Kamchatka Krai] + '39' => 'KYA', // Krasnoyarsk + '58' => 'PER', // Perm + '93' => 'ZAB', // Zabaykal'skiy Kray + ], + 'RW' => [ + '11' => '02', // Est + '12' => '01', // Kigali + '13' => '03', // Nord + '14' => '04', // Ouest + '15' => '05', // Sud + + // invalid codes [used by maxmind] + '01' => '05', // Butare [city in Southern] + '06' => '05', // Gitarama [city in Southern] + '07' => '02', // Kibungo [city in Eastern] + '09' => '01', // Kigali + ], + 'SA' => [ + '02' => '11', + '05' => '03', + '06' => '04', + '08' => '05', + '10' => '01', + '11' => '14', + '13' => '06', + '14' => '02', + '15' => '08', + '16' => '10', + '17' => '09', + '19' => '07', + '20' => '12', + ], + 'SB' => [ + '03' => 'ML', + '06' => 'GU', + '07' => 'IS', + '08' => 'MK', + '09' => 'TE', + '10' => 'CE', + '11' => 'WE', + '12' => 'CH', + '13' => 'RB', + ], + 'SC' => [ + '01' => '01', // Anse aux Pins + '02' => '02', // Anse Boileau + '03' => '03', // Anse Etoile + '05' => '05', // Anse Royale + '06' => '06', // Baie Lazare + '07' => '07', // Baie Sainte Anne + '08' => '08', // Beau Vallon + '09' => '09', // Bel Air + '10' => '10', // Bel Ombre + '11' => '11', // Cascade + '12' => '12', // Glacis + '14' => '14', // Grand' Anse + '17' => '17', // Mont Buxton + '18' => '18', // Mont Fleuri + '19' => '19', // Plaisance + '20' => '20', // Pointe La Rue + '22' => '22', // Saint Louis + '23' => '23', // Takamaka + + // valid codes [not used by maxmind + '24' => '13', + '25' => '15', + '26' => '16', + '27' => '21', + '28' => '04', + '29' => '24', + '30' => '25', + + // invalid codes [used by maxmind] + '04' => '04', // Anse Louis + '13' => '14', // Grand' Anse + '15' => '15', // La Digue + '16' => '16', // La Riviere Anglaise + '21' => '21', // Port Glaud + ], + 'SD' => [ + '29' => 'KH', // Al Khartum + '35' => '', // Upper Nile [reorganized, not mappable] + '40' => '', // Al Wahadah State [reorganized, not mappable] + '44' => '', // Central Equatoria State [reorganized, not mappable] + '49' => 'DS', // Southern Darfur + '50' => 'KS', // Southern Kordofan + '52' => 'KA', // Kassala + '53' => 'NR', // River Nile + '55' => 'DN', // Northern Darfur + + // valid codes [not used by maxmind] + '36' => 'RS', + '37' => '', // [reorganized, not mappable] + '38' => 'GZ', + '39' => 'GD', + '41' => 'NW', + '42' => 'NB', + '43' => 'NO', + '45' => '', // [reorganized, not mappable] + '46' => '', // [reorganized, not mappable] + '47' => 'DW', + '48' => 'GK', + '51' => '', // [reorganized, not mappable] + '54' => '', // [reorganized, not mappable] + '56' => 'KN', + '57' => '', // [reorganized, not mappable] + '58' => 'SI', + '59' => '', // [reorganized, not mappable] + + // invalid codes [used by maxmind] + '27' => '', // Al Wusta + '28' => '', // Al Istiwa'iyah + '30' => 'NO', // Ash Shamaliyah + '31' => '', // Ash Sharqiyah + '32' => '', // Bahr al Ghazal + '33' => 'DW', // Darfur + '34' => 'GK', // Kurdufan + ], + 'SE' => [ + '02' => 'K', + '03' => 'X', + '05' => 'I', + '06' => 'N', + '07' => 'Z', + '08' => 'F', + '09' => 'H', + '10' => 'W', + '12' => 'G', + '14' => 'BD', + '15' => 'T', + '16' => 'E', + '18' => 'D', + '21' => 'C', + '22' => 'S', + '23' => 'AC', + '24' => 'Y', + '25' => 'U', + '26' => 'AB', + '27' => 'M', + '28' => 'O', + ], + 'SH' => [ + '01' => 'AC', + '02' => 'HL', + '03' => 'TA', + ], + 'SI' => [ + '01' => '001', // Ajdovscina Commune + '02' => '002', // Beltinci Commune + '03' => '003', // Bled Commune + '04' => '004', // Bohinj Commune + '05' => '005', // Borovnica Commune + '06' => '006', // Bovec Commune + '07' => '007', // Brda Commune + '08' => '009', // Brezice Commune + '09' => '008', // Brezovica Commune + '11' => '011', // Celje Commune + '12' => '012', // Cerklje na Gorenjskem Commune + '13' => '013', // Cerknica Commune + '14' => '014', // Cerkno Commune + '15' => '015', // Crensovci Commune + '16' => '016', // Crna na Koroskem Commune + '17' => '017', // Crnomelj Commune + '19' => '019', // Divaca Commune + '20' => '020', // Dobrepolje Commune + '22' => '022', // Dol pri Ljubljani Commune + '24' => '024', // Dornava Commune + '25' => '025', // Dravograd Commune + '26' => '026', // Duplek Commune + '27' => '027', // Gorenja vas-Poljane Commune + '28' => '028', // Gorisnica Commune + '29' => '029', // Gornja Radgona Commune + '30' => '030', // Gornji Grad Commune + '31' => '031', // Gornji Petrovci Commune + '32' => '032', // Grosuplje Commune + '34' => '034', // Hrastnik Commune + '35' => '035', // Hrpelje-Kozina Commune + '36' => '036', // Idrija Commune + '37' => '037', // Ig Commune + '38' => '038', // Ilirska Bistrica Commune + '39' => '039', // Ivancna Gorica Commune + '40' => '040', // Izola-Isola Commune + '42' => '042', // Jursinci Commune + '44' => '044', // Kanal Commune + '45' => '045', // Kidricevo Commune + '46' => '046', // Kobarid Commune + '47' => '047', // Kobilje Commune + '49' => '049', // Komen Commune + '50' => '050', // Koper-Capodistria Urban Commune + '51' => '051', // Kozje Commune + '52' => '052', // Kranj Commune + '53' => '053', // Kranjska Gora Commune + '54' => '054', // Krsko Commune + '55' => '055', // Kungota Commune + '57' => '057', // Lasko Commune + '61' => '061', // Ljubljana Urban Commune + '62' => '062', // Ljubno Commune + '64' => '064', // Logatec Commune + '66' => '066', // Loski Potok Commune + '68' => '068', // Lukovica Commune + '71' => '071', // Medvode Commune + '72' => '072', // Menges Commune + '73' => '073', // Metlika Commune + '74' => '074', // Mezica Commune + '76' => '076', // Mislinja Commune + '77' => '077', // Moravce Commune + '78' => '078', // Moravske Toplice Commune + '79' => '079', // Mozirje Commune + '80' => '080', // Murska Sobota Urban Commune + '81' => '081', // Muta Commune + '82' => '082', // Naklo Commune + '83' => '083', // Nazarje Commune + '84' => '084', // Nova Gorica Urban Commune + '86' => '086', // Odranci Commune + '87' => '087', // Ormoz Commune + '88' => '088', // Osilnica Commune + '89' => '089', // Pesnica Commune + '91' => '091', // Pivka Commune + '92' => '092', // Podcetrtek Commune + '94' => '094', // Postojna Commune + '97' => '097', // Puconci Commune + '98' => '098', // Race-Fram Commune + '99' => '099', // Radece Commune + 'A1' => '100', // Radenci Commune + 'A2' => '101', // Radlje ob Dravi Commune + 'A3' => '102', // Radovljica Commune + 'A6' => '105', // Rogasovci Commune + 'A7' => '106', // Rogaska Slatina Commune + 'A8' => '107', // Rogatec Commune + 'B1' => '109', // Semic Commune + 'B2' => '117', // Sencur Commune + 'B3' => '118', // Sentilj Commune + 'B4' => '119', // Sentjernej Commune + 'B6' => '110', // Sevnica Commune + 'B7' => '111', // Sezana Commune + 'B8' => '121', // Skocjan Commune + 'B9' => '122', // Skofja Loka Commune + 'C1' => '123', // Skofljica Commune + 'C2' => '112', // Slovenj Gradec Urban Commune + 'C4' => '114', // Slovenske Konjice Commune + 'C5' => '124', // Smarje pri Jelsah Commune + 'C6' => '125', // Smartno ob Paki Commune + 'C7' => '126', // Sostanj Commune + 'C8' => '115', // Starse Commune + 'C9' => '127', // Store Commune + 'D1' => '210', // Sveti Jurij Commune + 'D2' => '128', // Tolmin Commune + 'D3' => '129', // Trbovlje Commune + 'D4' => '130', // Trebnje Commune + 'D5' => '131', // Trzic Commune + 'D6' => '132', // Turnisce Commune + 'D7' => '133', // Velenje Urban Commune + 'D8' => '134', // Velike Lasce Commune + 'E1' => '136', // Vipava Commune + 'E2' => '137', // Vitanje Commune + 'E3' => '138', // Vodice Commune + 'E5' => '140', // Vrhnika Commune + 'E6' => '141', // Vuzenica Commune + 'E7' => '142', // Zagorje ob Savi Commune + 'E9' => '143', // Zavrc Commune + 'F1' => '146', // Zelezniki Commune + 'F2' => '147', // Ziri Commune + 'F3' => '144', // Zrece Commune + 'F4' => '148', // Benedikt Commune + 'F5' => '149', // Bistrica ob Sotli Commune + 'F6' => '150', // Bloke Commune + 'F7' => '151', // Braslovce Commune + 'F8' => '152', // Cankova Commune + 'F9' => '153', // Cerkvenjak Commune + 'G1' => '018', // Destrnik Commune + 'G2' => '154', // Dobje Commune + 'G3' => '155', // Dobrna Commune + 'G4' => '021', // Dobrova-Horjul-Polhov Gradec Commune + 'G5' => '156', // Dobrovnik-Dobronak Commune + 'G6' => '157', // Dolenjske Toplice Commune + 'G7' => '023', // Domzale Commune + 'G8' => '158', // Grad Commune + 'G9' => '159', // Hajdina Commune + 'H1' => '160', // Hoce-Slivnica Commune + 'H2' => '161', // Hodos-Hodos Commune + 'H3' => '162', // Horjul Commune + 'H4' => '041', // Jesenice Commune + 'H5' => '163', // Jezersko Commune + 'H6' => '043', // Kamnik Commune + 'H7' => '048', // Kocevje Commune + 'H8' => '164', // Komenda Commune + 'H9' => '165', // Kostel Commune + 'I1' => '166', // Krizevci Commune + 'I2' => '056', // Kuzma Commune + 'I3' => '058', // Lenart Commune + 'I4' => '059', // Lendava-Lendva Commune + 'I5' => '060', // Litija Commune + 'I6' => '063', // Ljutomer Commune + 'I7' => '065', // Loska Dolina Commune + 'I8' => '167', // Lovrenc na Pohorju Commune + 'I9' => '067', // Luce Commune + 'J1' => '069', // Majsperk Commune + 'J2' => '070', // Maribor Commune + 'J3' => '168', // Markovci Commune + 'J4' => '169', // Miklavz na Dravskem polju Commune + 'J5' => '075', // Miren-Kostanjevica Commune + 'J6' => '170', // Mirna Pec Commune + 'J7' => '085', // Novo mesto Urban Commune + 'J8' => '171', // Oplotnica Commune + 'J9' => '090', // Piran-Pirano Commune + 'K1' => '172', // Podlehnik Commune + 'K2' => '093', // Podvelka Commune + 'K3' => '173', // Polzela Commune + 'K4' => '174', // Prebold Commune + 'K5' => '095', // Preddvor Commune + 'K6' => '175', // Prevalje Commune + 'K7' => '096', // Ptuj Urban Commune + 'K8' => '103', // Ravne na Koroskem Commune + 'K9' => '176', // Razkrizje Commune + 'L1' => '104', // Ribnica Commune + 'L2' => '177', // Ribnica na Pohorju Commune + 'L3' => '108', // Ruse Commune + 'L4' => '033', // Salovci Commune + 'L5' => '178', // Selnica ob Dravi Commune + 'L6' => '183', // Sempeter-Vrtojba Commune + 'L7' => '120', // Sentjur pri Celju Commune + 'L8' => '113', // Slovenska Bistrica Commune + 'L9' => '194', // Smartno pri Litiji Commune + 'M1' => '179', // Sodrazica Commune + 'M2' => '180', // Solcava Commune + 'M3' => '181', // Sveta Ana Commune + 'M4' => '182', // Sveti Andraz v Slovenskih goricah Commune + 'M5' => '184', // Tabor Commune + 'M6' => '010', // Tisina Commune + 'M7' => '185', // Trnovska vas Commune + 'M8' => '186', // Trzin Commune + 'M9' => '187', // Velika Polana Commune + 'N1' => '188', // Verzej Commune + 'N2' => '135', // Videm Commune + 'N3' => '139', // Vojnik Commune + 'N4' => '189', // Vransko Commune + 'N5' => '190', // Zalec Commune + 'N6' => '191', // Zetale Commune + 'N7' => '192', // Zirovnica Commune + 'N8' => '193', // Zuzemberk Commune + + // invalid codes [used by maxmind] + 'N9' => '195', // Apace Commune + 'O1' => '196', // Cirkulane Commune + 'O2' => '207', // Gorje + 'O3' => '197', // Kostanjevica na Krki + 'O4' => '208', // Log-Dragomer + 'O5' => '198', // Makole + 'O6' => '212', // Mirna + 'O7' => '199', // Mokronog-Trebelno + 'O8' => '200', // Poljcane + 'O9' => '209', // Recica ob Savinji + 'P1' => '201', // Rence-Vogrsko + 'P2' => '211', // Sentrupert + 'P3' => '206', // Smarjesk Toplice + 'P4' => '202', // Sredisce ob Dravi + 'P5' => '203', // Straza + 'P7' => '210', // Sveti Jurij v Slovenskih Goricah + ], + 'SK' => [ + '01' => 'BC', + '02' => 'BL', + '03' => 'KI', + '04' => 'NI', + '05' => 'PV', + '06' => 'TC', + '07' => 'TA', + '08' => 'ZI', + ], + 'SL' => [ + '01' => 'E', + '02' => 'N', + '03' => 'S', + '04' => 'W', + ], + 'SM' => [ + '01' => '01', + '02' => '02', + '03' => '03', + '04' => '04', + '05' => '05', + '06' => '06', + '07' => '07', + '08' => '08', + '09' => '09', + ], + 'SN' => [ + '01' => 'DK', + '03' => 'DB', + '05' => 'TC', + '07' => 'TH', + '09' => 'FK', + '10' => 'KL', + '11' => 'KD', + '12' => 'ZG', + '13' => 'LG', + '14' => 'SL', + '15' => 'MT', + ], + 'SO' => [ + '01' => 'BK', + '02' => 'BN', + '03' => 'BR', + '04' => 'BY', + '05' => 'GA', + '06' => 'GE', + '07' => 'HI', + '08' => 'JD', + '09' => 'JH', + '10' => 'MU', + '12' => 'SA', + '13' => 'SD', + '14' => 'SH', + '18' => 'NU', + '19' => 'TO', + '20' => 'WO', + '21' => 'AW', + '22' => 'SO', + + // invalid codes [used by maxmind] + '11' => 'NU', + '16' => 'WO', + ], + 'SR' => [ + '10' => 'BR', + '11' => 'CM', + '12' => 'CR', + '13' => 'MA', + '14' => 'NI', + '15' => 'PR', + '16' => 'PM', + '17' => 'SA', + '18' => 'SI', + '19' => 'WA', + ], + 'SS' => [ + // invalid codes [used by maxmind] + '01' => 'EC', // Central Equatoria + '02' => 'EE', // Eastern Equatoria + '03' => 'JG', // Jonglei + '04' => 'LK', // Lakes + '05' => 'BN', // Northern Bahr el Ghazal + '06' => 'UY', // Unity + '07' => 'NU', // Upper Nile + '08' => 'WR', // Warrap + '09' => 'BW', // Western Bahr el Ghazal + '10' => 'EW', // Western Equatoria + ], + 'ST' => [ + '01' => 'P', // Principe + '02' => 'S', // Sao Tome + ], + 'SV' => [ + '01' => 'AH', + '02' => 'CA', + '03' => 'CH', + '04' => 'CU', + '05' => 'LI', + '06' => 'PA', + '07' => 'UN', + '08' => 'MO', + '09' => 'SM', + '10' => 'SS', + '11' => 'SA', + '12' => 'SV', + '13' => 'SO', + '14' => 'US', + ], + 'SY' => [ + '01' => 'HA', // Al Hasakah + '02' => 'LA', // Al Ladhiqiyah + '03' => 'QU', // Al Qunaytirah + '04' => 'RA', // Ar Raqqah + '05' => 'SU', // As Suwayda' + '06' => 'DR', // Dar + '07' => 'DY', // Dayr az Zawr + '08' => 'RD', // Rif Dimashq + '09' => 'HL', // Halab + '10' => 'HM', // Hamah + '11' => 'HI', // Hims + '12' => 'ID', // Idlib + '13' => 'DI', // Dimashq + '14' => 'TA', // Tartus + ], + 'SZ' => [ + '01' => 'HH', + '02' => 'LU', + '03' => 'MA', + '04' => 'SH', + + // screwed up code, that seems to be from Seychelles + '05' => '', // Praslin + ], + 'TD' => [ + '01' => 'BA', + '02' => 'WF', + '03' => '', // Borkou-Ennedi-Tibesti [split up] + '05' => 'GR', + '06' => 'KA', + '07' => 'LC', + '08' => 'LO', + '09' => 'LR', + '12' => 'OD', + '13' => 'SA', + '14' => 'TA', + + // invalid codes [used by maxmind] + '04' => '', // Chari-Baguirmi [split up] + '10' => '', // Mayo-Kebbi [split into east and west] + '11' => 'MC', // Moyen-Chari + + // valid codes [not used by maxmind] + '15' => '', // Chari-Baguirmi [split up] + '16' => 'ME', + '17' => 'MC', + '18' => 'HL', + '19' => 'MA', + '20' => 'MO', + '21' => 'ND', + ], + 'TG' => [ + '22' => 'C', + '23' => 'K', + '24' => 'M', + '25' => 'P', + '26' => 'S', + ], + 'TH' => [ + '01' => '58', // Mae Hong Son + '02' => '50', // Chiang Mai + '03' => '57', // Chiang Rai + '04' => '55', // Nan + '05' => '51', // Lamphun + '06' => '52', // Lampang + '07' => '54', // Phrae + '08' => '63', // Tak + '09' => '64', // Sukhothai + '10' => '53', // Uttaradit + '11' => '62', // Kamphaeng Phet + '12' => '65', // Phitsanulok + '13' => '66', // Phichit + '14' => '67', // Phetchabun + '15' => '61', // Uthai Thani + '16' => '60', // Nakhon Sawan + '17' => '43', // Nong Khai + '18' => '42', // Loei + '20' => '47', // Sakon Nakhon + '22' => '40', // Khon Kaen + '23' => '46', // Kalasin + '24' => '44', // Maha Sarakham + '25' => '45', // Roi Et + '26' => '36', // Chaiyaphum + '27' => '30', // Nakhon Ratchasima + '28' => '31', // Buriram + '29' => '32', // Surin + '30' => '33', // Sisaket + '31' => '96', // Narathiwat + '32' => '18', // Chai Nat + '33' => '17', // Sing Buri + '34' => '16', // Lop Buri + '35' => '15', // Ang Thong + '36' => '14', // Phra Nakhon Si Ayutthaya + '37' => '19', // Saraburi + '38' => '12', // Nonthaburi + '39' => '13', // Pathum Thani + '40' => '10', // Krung Thep + '41' => '56', // Phayao + '42' => '11', // Samut Prakan + '43' => '26', // Nakhon Nayok + '44' => '24', // Chachoengsao + '46' => '20', // Chon Buri + '47' => '21', // Rayong + '48' => '22', // Chanthaburi + '49' => '23', // Trat + '50' => '71', // Kanchanaburi + '51' => '72', // Suphan Buri + '52' => '70', // Ratchaburi + '53' => '73', // Nakhon Pathom + '54' => '75', // Samut Songkhram + '55' => '74', // Samut Sakhon + '56' => '76', // Phetchaburi + '57' => '77', // Prachuap Khiri Khan + '58' => '86', // Chumphon + '59' => '85', // Ranong + '60' => '84', // Surat Thani + '61' => '82', // Phangnga + '62' => '83', // Phuket + '63' => '81', // Krabi + '64' => '80', // Nakhon Si Thammarat + '65' => '92', // Trang + '66' => '93', // Phatthalung + '67' => '91', // Satun + '68' => '90', // Songkhla + '69' => '94', // Pattani + '70' => '95', // Yala + '72' => '35', // Yasothon + '73' => '48', // Nakhon Phanom + '74' => '25', // Prachin Buri + '75' => '34', // Ubon Ratchathani + '76' => '41', // Udon Thani + '77' => '37', // Amnat Charoen + '78' => '49', // Mukdahan + '79' => '39', // Nong Bua Lamphu + '80' => '27', // Sa Kaeo + + // invalid codes [used by maxmind] + '21' => '48', // Nakhon Phanom + '45' => '25', // Prachin Buri + '71' => '34', // Ubon Ratchathani + '81' => '38', // Bueng Kan + ], + 'TJ' => [ + '01' => 'GB', + '02' => 'KT', + '03' => 'SU', + + // invalid codes [used by maxmind] + '04' => 'DU', + '05' => 'RA', + ], + 'TL' => [ + // invalid codes [used by maxmind] + '06' => 'DI', // Dili + ], + 'TM' => [ + '01' => 'A', + '02' => 'B', + '03' => 'D', + '04' => 'L', + '05' => 'M', + ], + 'TN' => [ + '02' => '42', + '03' => '41', + '06' => '32', + '10' => '71', + '14' => '33', + '15' => '53', + '16' => '52', + '17' => '31', + '18' => '23', + '19' => '21', + '22' => '34', + '23' => '51', + '27' => '13', + '28' => '82', + '29' => '81', + '31' => '73', + '32' => '61', + '33' => '43', + '34' => '83', + '35' => '72', + '36' => '11', + '37' => '22', + '38' => '12', + '39' => '14', + ], + 'TO' => [ + '01' => '02', + '02' => '04', + '03' => '05', + ], + 'TR' => [ + '02' => '02', // Adiyaman + '03' => '03', // Afyonkarahisar + '04' => '04', // Agri + '05' => '05', // Amasya + '07' => '07', // Antalya + '08' => '08', // Artvin + '09' => '09', // Aydin + '10' => '10', // Balikesir + '11' => '11', // Bilecik + '12' => '12', // Bingol + '13' => '13', // Bitlis + '14' => '14', // Bolu + '15' => '15', // Burdur + '16' => '16', // Bursa + '17' => '17', // Canakkale + '19' => '19', // Corum + '20' => '20', // Denizli + '21' => '21', // Diyarbakir + '22' => '22', // Edirne + '23' => '23', // Elazig + '24' => '24', // Erzincan + '25' => '25', // Erzurum + '26' => '26', // Eskisehir + '28' => '28', // Giresun + '31' => '31', // Hatay + '32' => '33', // Mersin + '33' => '32', // Isparta + '34' => '34', // Istanbul + '35' => '35', // Izmir + '37' => '37', // Kastamonu + '38' => '38', // Kayseri + '39' => '39', // Kirklareli + '40' => '40', // Kirsehir + '41' => '41', // Kocaeli + '43' => '43', // Kutahya + '44' => '44', // Malatya + '45' => '45', // Manisa + '46' => '46', // Kahramanmaras + '48' => '48', // Mugla + '49' => '49', // Mus + '50' => '50', // Nevsehir + '52' => '52', // Ordu + '53' => '53', // Rize + '54' => '54', // Sakarya + '55' => '55', // Samsun + '57' => '57', // Sinop + '58' => '58', // Sivas + '59' => '59', // Tekirdag + '60' => '60', // Tokat + '61' => '61', // Trabzon + '62' => '62', // Tunceli + '63' => '63', // Sanliurfa + '64' => '64', // Usak + '65' => '65', // Van + '66' => '66', // Yozgat + '68' => '06', // Ankara + '69' => '29', // Gumushane + '70' => '30', // Hakkari + '71' => '42', // Konya + '72' => '47', // Mardin + '73' => '51', // Nigde + '74' => '56', // Siirt + '75' => '68', // Aksaray + '76' => '72', // Batman + '77' => '69', // Bayburt + '78' => '70', // Karaman + '79' => '71', // Kirikkale + '80' => '73', // Sirnak + '81' => '01', // Adana + '82' => '18', // Cankiri + '83' => '27', // Gaziantep + '84' => '36', // Kars + '85' => '67', // Zonguldak + '86' => '75', // Ardahan + '87' => '74', // Bartin + '88' => '76', // Igdir + '89' => '78', // Karabuk + '90' => '79', // Kilis + '91' => '80', // Osmaniye + '92' => '77', // Yalova + '93' => '81', // Duzce + ], + 'TT' => [ + '01' => 'ARI', // Arima + '02' => '', // Caroni [split up] + '03' => 'MRC', // Mayaro + '04' => '', // Nariva [split up] + '05' => 'POS', // Port-of-Spain + '06' => 'SGE', // Saint Andrew [now in Sangre Grand] + '07' => 'SGE', // Saint David [now in Sangre Grand] + '08' => '', // Saint George [split up] + '09' => '', // Saint Patrick [split up] + '10' => 'SFO', // San Fernando + '11' => 'TOB', // Tobago + '12' => '', // Victoria [split up] + ], + 'TW' => [ + '01' => '', + '02' => 'KHH', + '03' => 'TPE', + '04' => '', + ], + 'TZ' => [ + '02' => '19', + '03' => '03', + '04' => '04', + '05' => '08', + '06' => '09', + '07' => '12', + '08' => '13', + '09' => '14', + '10' => '16', + '11' => '17', + '12' => '18', + '13' => '06', + '14' => '21', + '15' => '22', + '16' => '23', + '17' => '24', + '18' => '25', + '19' => '05', + '20' => '10', + '21' => '11', + '22' => '07', + '23' => '02', + '24' => '20', + '25' => '15', + '26' => '01', + '27' => '26', + ], + 'UA' => [ + '01' => '71', + '02' => '74', + '03' => '77', + '04' => '12', + '05' => '14', + '06' => '26', + '07' => '63', + '08' => '65', + '09' => '68', + '10' => '35', + '11' => '43', + '12' => '30', + '13' => '32', + '14' => '09', + '15' => '46', + '16' => '48', + '17' => '51', + '18' => '53', + '19' => '56', + '20' => '40', + '21' => '59', + '22' => '61', + '23' => '05', + '24' => '07', + '25' => '21', + '26' => '23', + '27' => '18', + ], + 'UG' => [ + '26' => '302', // Apac + '28' => '401', // Bundibugyo + '29' => '102', // Bushenyi + '30' => '304', // Gulu + '31' => '403', // Hoima + '33' => '204', // Jinja + '36' => '101', // Kalangala + '37' => '102', // Kampala + '38' => '205', // Kamuli + '39' => '206', // Kapchorwa + '40' => '406', // Kasese + '41' => '407', // Kibale + '42' => '103', // Kiboga + '43' => '408', // Kisoro + '45' => '306', // Kotido + '46' => '208', // Kumi + '47' => '307', // Lira + '50' => '409', // Masindi + '52' => '410', // Mbarara + '56' => '107', // Mubende + '58' => '310', // Nebbi + '59' => '411', // Ntungamo + '60' => '210', // Pallisa + '61' => '110', // Rakai + '65' => '301', // Adjumani + '66' => '201', // Bugiri + '67' => '202', // Busia + '69' => '207', // Katakwi + '70' => '104', // Luwero + '71' => '105', // Masaka + '72' => '309', // Moyo + '73' => '109', // Nakasongola + '74' => '111', // Sembabule + '76' => '212', // Tororo + '77' => '303', // Arua + '78' => '203', // Iganga + '79' => '405', // Kabarole + '80' => '213', // Kaberamaido + '81' => '413', // Kamwenge + '82' => '414', // Kanungu + '83' => '112', // Kayunga + '84' => '305', // Kitgum + '85' => '415', // Kyenjojo + '86' => '214', // Mayuge + '87' => '209', // Mbale + '88' => '308', // Moroto + '89' => '106', // Mpigi + '90' => '108', // Mukono + '91' => '311', // Nakapiripirit + '92' => '312', // Pader + '93' => '412', // Rukungiri + '94' => '215', // Sironko + '95' => '211', // Soroti + '96' => '113', // Wakiso + '97' => '313', // Yumbe + + // valid codes [not used by maxmind] + '34' => '404', // Kabale + ], + 'UY' => [ + '01' => 'AR', + '02' => 'CA', + '03' => 'CL', + '04' => 'CO', + '05' => 'DU', + '06' => 'FS', + '07' => 'FD', + '08' => 'LA', + '09' => 'MA', + '10' => 'MO', + '11' => 'PA', + '12' => 'RN', + '13' => 'RV', + '14' => 'RO', + '15' => 'SA', + '16' => 'SJ', + '17' => 'SO', + '18' => 'TA', + '19' => 'TT', + ], + 'UZ' => [ + '01' => 'AN', + '02' => 'BU', + '03' => 'FA', + '05' => 'XO', + '06' => 'NG', + '07' => 'NW', + '08' => 'QA', + '09' => 'QR', + '10' => 'SA', + '12' => 'SU', + '13' => 'TK', + '14' => 'TO', + '15' => 'JI', + + // invalid codes [used by maxmind] + '04' => 'JI', + '11' => 'SI', + ], + 'VC' => [ + '01' => '01', + '02' => '02', + '03' => '03', + '04' => '04', + '05' => '05', + '06' => '06', + ], + 'VE' => [ + '01' => 'Z', + '02' => 'B', + '03' => 'C', + '04' => 'D', + '05' => 'E', + '06' => 'F', + '07' => 'G', + '08' => 'H', + '09' => 'Y', + '11' => 'I', + '12' => 'J', + '13' => 'K', + '14' => 'L', + '15' => 'M', + '16' => 'N', + '17' => 'O', + '18' => 'P', + '19' => 'R', + '20' => 'S', + '21' => 'T', + '22' => 'U', + '23' => 'V', + '24' => 'W', + '25' => 'A', + '26' => 'X', + ], + 'VN' => [ + '01' => '44', // An Giang + '03' => '50', // Ben Tre + '05' => '04', // Cao Bang + '09' => '45', // Dong Thap + '13' => 'HP', // Hai Phong + '20' => 'SG', // Ho Chi Minh + '21' => '47', // Kien Giang + '23' => '35', // Lam Dong + '24' => '41', // Long An + '30' => '13', // Quang Ninh + '32' => '05', // Son La + '33' => '37', // Tay Ninh + '34' => '21', // Thanh Hoa + '35' => '20', // Thai Binh + '37' => '46', // Tien Giang + '39' => '09', // Lang Son + '43' => '39', // Dong Nai + '44' => 'HN', // Ha Noi + '45' => '45', // Ba Ria-Vung Tau + '46' => '31', // Binh Dinh + '47' => '40', // Binh Thuan + '49' => '30', // Gia Lai + '50' => '03', // Ha Giang + '52' => '23', // Ha Tinh + '53' => '14', // Hoa Binh + '54' => '34', // Khanh Hoa + '55' => '28', // Kon Tum + '58' => '22', // Nghe An + '59' => '18', // Ninh Binh + '60' => '36', // Ninh Thuan + '61' => '32', // Phu Yen + '62' => '24', // Quang Binh + '63' => '29', // Quang Ngai + '64' => '25', // Quang Tri + '65' => '52', // Soc Trang + '66' => '26', // Thua Thien-Hue + '67' => '51', // Tra Vinh + '68' => '07', // Tuyen Quang + '69' => '49', // Vinh Long + '70' => '06', // Yen Bai + '71' => '54', // Bac Giang + '72' => '53', // Bac Kan + '73' => '55', // Bac Lieu + '74' => '56', // Bac Ninh + '75' => '57', // Binh Duong + '76' => '58', // Binh Phuoc + '77' => '59', // Ca Mau + '78' => 'DN', // Da Nang + '79' => '61', // Hai Duong + '80' => '63', // Ha Nam + '81' => '66', // Hung Yen + '82' => '67', // Nam Dinh + '83' => '68', // Phu Tho + '84' => '27', // Quang Nam + '85' => '69', // Thai Nguyen + '86' => '70', // Vinh Phuc + '87' => 'CT', // Can Tho + '88' => '33', // Dac Lak + '89' => '01', // Lai Chau + '90' => '02', // Lao Cai + '91' => '72', // Dak Nong + '92' => '71', // Dien Bien + '93' => '73', // Hau Giang + + // valid codes [not used by maxmind] + '51' => 'HN', // Hà Tây [merged in Ha Noi] + ], + 'VU' => [ + '07' => 'TOB', + '13' => 'SAM', + '15' => 'TAE', + '16' => 'MAP', + '17' => 'PAM', + '18' => 'SEE', + + // invalid codes [used by maxmind] + '05' => 'MAP', // Ambrym [island in Malampa] + '06' => 'PAM', // Aoba [island in Penama] + '08' => 'SEE', // Efate [island in Shefa] + '09' => 'SEE', // Epi [island in Shefa] + '10' => 'MAP', // Malakula [island in Malampa] + '11' => 'MAP', // Paama [island in Malampa] + '12' => 'PAM', // Pentecote [island in Penama] + '14' => 'SEE', // Shepherd [island in Shefa] + ], + 'WS' => [ + '02' => 'AL', + '03' => 'AT', + '04' => 'FA', + '05' => 'GE', + '06' => 'VF', + '07' => 'GI', + '08' => 'PA', + '09' => 'SA', + '10' => 'TU', + '11' => 'VS', + + // valid codes [not used by maxmind] + '01' => 'AA', + ], + 'YE' => [ + '01' => 'AB', // Abyan + '02' => 'AD', // Adan + '03' => 'MR', // Al Mahrah + '04' => 'HD', // Hadramawt + '05' => 'SH', // Shabwah + '08' => 'HU', // Al Hudaydah + '10' => 'MW', // Al Mahwit + '11' => 'DH', // Dhamar + '14' => 'MA', // Ma'rib + '15' => 'SD', // Sa'dah + '16' => 'SN', // San'a' + '18' => 'DA', // Ad Dali + '19' => 'AM', // Amran + '20' => 'BA', // Al Bayda' + '21' => 'JA', // Al Jawf + '22' => 'HJ', // Hajjah + '23' => 'IB', // Ibb + '24' => 'LA', // Lahij + '25' => 'TA', // Taizz + + // invalid codes [used by maxmind] + '06' => 'LA', // Lahij + '07' => 'BA', // Al Bayda' + '09' => 'JA', // Al Jawf + '12' => 'HJ', // Hajjah + '13' => 'IB', // Ibb + '17' => 'TA', // Taizz + ], + 'ZA' => [ + '02' => 'NL', + '03' => 'FS', + '05' => 'EC', + '06' => 'GT', + '07' => 'MP', + '08' => 'NC', + '09' => 'LP', + '10' => 'NW', + '11' => 'WC', + + // invalid codes [used by maxmind] + '01' => 'NW', // North-Western Province + ], + 'ZM' => [ + '01' => '01', + '02' => '02', + '03' => '03', + '04' => '04', + '05' => '05', + '06' => '06', + '07' => '07', + '08' => '08', + '09' => '09', + ], + 'ZW' => [ + '01' => 'MA', + '02' => 'MI', + '03' => 'MC', + '04' => 'ME', + '05' => 'MW', + '06' => 'MN', + '07' => 'MS', + '08' => 'MV', + '09' => 'BU', + '10' => 'HA', + ], +];
\ No newline at end of file |