lite-phone-input 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../data/phone-countries.json","../../src/core/format.ts","../../src/core/countries.ts","../../src/core/validate.ts","../../src/vanilla/dropdown.ts","../../src/vanilla/phone-input.ts"],"sourcesContent":["[\n {\n \"c\": \"AF\",\n \"n\": \"Afghanistan\",\n \"d\": \"93\",\n \"f\": \"XX XXX XXXX\",\n \"p\": \"0\",\n \"min\": 9,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"AX\",\n \"n\": \"Åland Islands\",\n \"d\": \"358\",\n \"f\": \"XX XXXXXXX\",\n \"p\": \"0\",\n \"min\": 6,\n \"max\": 10,\n \"pri\": 1\n },\n {\n \"c\": \"AL\",\n \"n\": \"Albania\",\n \"d\": \"355\",\n \"f\": \"XX XXX XXXX\",\n \"p\": \"0\",\n \"min\": 8,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"DZ\",\n \"n\": \"Algeria\",\n \"d\": \"213\",\n \"f\": \"XXX XX XX XX\",\n \"p\": \"0\",\n \"min\": 8,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"AS\",\n \"n\": \"American Samoa\",\n \"d\": \"1\",\n \"f\": \"XXX XXX XXXX\",\n \"p\": \"1\",\n \"min\": 10,\n \"max\": 10,\n \"pri\": 3\n },\n {\n \"c\": \"AD\",\n \"n\": \"Andorra\",\n \"d\": \"376\",\n \"f\": \"XXX XXX\",\n \"p\": null,\n \"min\": 6,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"AO\",\n \"n\": \"Angola\",\n \"d\": \"244\",\n \"f\": \"XXX XXX XXX\",\n \"p\": null,\n \"min\": 9,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"AI\",\n \"n\": \"Anguilla\",\n \"d\": \"1\",\n \"f\": \"XXX XXX XXXX\",\n \"p\": \"1\",\n \"min\": 10,\n \"max\": 10,\n \"pri\": 2\n },\n {\n \"c\": \"AG\",\n \"n\": \"Antigua & Barbuda\",\n \"d\": \"1\",\n \"f\": \"XXX XXX XXXX\",\n \"p\": \"1\",\n \"min\": 10,\n \"max\": 10,\n \"pri\": 1\n },\n {\n \"c\": \"AR\",\n \"n\": \"Argentina\",\n \"d\": \"54\",\n \"f\": \"XX XX XXXX XXXX\",\n \"p\": \"0\",\n \"min\": 10,\n \"max\": 11,\n \"pri\": 0\n },\n {\n \"c\": \"AM\",\n \"n\": \"Armenia\",\n \"d\": \"374\",\n \"f\": \"XX XXXXXX\",\n \"p\": \"0\",\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"AW\",\n \"n\": \"Aruba\",\n \"d\": \"297\",\n \"f\": \"XXX XXXX\",\n \"p\": null,\n \"min\": 7,\n \"max\": 7,\n \"pri\": 0\n },\n {\n \"c\": \"AC\",\n \"n\": \"Ascension Island\",\n \"d\": \"247\",\n \"f\": null,\n \"p\": null,\n \"min\": 5,\n \"max\": 5,\n \"pri\": 0\n },\n {\n \"c\": \"AU\",\n \"n\": \"Australia\",\n \"d\": \"61\",\n \"f\": \"XXX XXX XXX\",\n \"p\": \"0\",\n \"min\": 9,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"AT\",\n \"n\": \"Austria\",\n \"d\": \"43\",\n \"f\": \"XXX XXXXXX\",\n \"p\": \"0\",\n \"min\": 4,\n \"max\": 13,\n \"pri\": 0\n },\n {\n \"c\": \"AZ\",\n \"n\": \"Azerbaijan\",\n \"d\": \"994\",\n \"f\": \"XX XXX XX XX\",\n \"p\": \"0\",\n \"min\": 9,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"BS\",\n \"n\": \"Bahamas\",\n \"d\": \"1\",\n \"f\": \"XXX XXX XXXX\",\n \"p\": \"1\",\n \"min\": 10,\n \"max\": 10,\n \"pri\": 6\n },\n {\n \"c\": \"BH\",\n \"n\": \"Bahrain\",\n \"d\": \"973\",\n \"f\": \"XXXX XXXX\",\n \"p\": null,\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"BD\",\n \"n\": \"Bangladesh\",\n \"d\": \"880\",\n \"f\": \"XXXX XXXXXX\",\n \"p\": \"0\",\n \"min\": 6,\n \"max\": 10,\n \"pri\": 0\n },\n {\n \"c\": \"BB\",\n \"n\": \"Barbados\",\n \"d\": \"1\",\n \"f\": \"XXX XXX XXXX\",\n \"p\": \"1\",\n \"min\": 10,\n \"max\": 10,\n \"pri\": 4\n },\n {\n \"c\": \"BY\",\n \"n\": \"Belarus\",\n \"d\": \"375\",\n \"f\": \"XX XXX XX XX\",\n \"p\": \"8\",\n \"min\": 9,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"BE\",\n \"n\": \"Belgium\",\n \"d\": \"32\",\n \"f\": \"XXX XX XX XX\",\n \"p\": \"0\",\n \"min\": 8,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"BZ\",\n \"n\": \"Belize\",\n \"d\": \"501\",\n \"f\": \"XXX XXXX\",\n \"p\": null,\n \"min\": 7,\n \"max\": 7,\n \"pri\": 0\n },\n {\n \"c\": \"BJ\",\n \"n\": \"Benin\",\n \"d\": \"229\",\n \"f\": \"XX XX XX XX XX\",\n \"p\": null,\n \"min\": 10,\n \"max\": 10,\n \"pri\": 0\n },\n {\n \"c\": \"BM\",\n \"n\": \"Bermuda\",\n \"d\": \"1\",\n \"f\": \"XXX XXX XXXX\",\n \"p\": \"1\",\n \"min\": 10,\n \"max\": 10,\n \"pri\": 5\n },\n {\n \"c\": \"BT\",\n \"n\": \"Bhutan\",\n \"d\": \"975\",\n \"f\": \"XX XX XX XX\",\n \"p\": null,\n \"min\": 7,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"BO\",\n \"n\": \"Bolivia\",\n \"d\": \"591\",\n \"f\": \"XXXXXXXX\",\n \"p\": \"0\",\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"BA\",\n \"n\": \"Bosnia & Herzegovina\",\n \"d\": \"387\",\n \"f\": \"XX XXX XXX\",\n \"p\": \"0\",\n \"min\": 8,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"BW\",\n \"n\": \"Botswana\",\n \"d\": \"267\",\n \"f\": \"XX XXX XXX\",\n \"p\": null,\n \"min\": 7,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"BR\",\n \"n\": \"Brazil\",\n \"d\": \"55\",\n \"f\": \"XX XXXXX XXXX\",\n \"p\": \"0\",\n \"min\": 10,\n \"max\": 11,\n \"pri\": 0\n },\n {\n \"c\": \"IO\",\n \"n\": \"British Indian Ocean Territory\",\n \"d\": \"246\",\n \"f\": \"XXX XXXX\",\n \"p\": null,\n \"min\": 7,\n \"max\": 7,\n \"pri\": 0\n },\n {\n \"c\": \"VG\",\n \"n\": \"British Virgin Islands\",\n \"d\": \"1\",\n \"f\": \"XXX XXX XXXX\",\n \"p\": \"1\",\n \"min\": 10,\n \"max\": 10,\n \"pri\": 23\n },\n {\n \"c\": \"BN\",\n \"n\": \"Brunei\",\n \"d\": \"673\",\n \"f\": \"XXX XXXX\",\n \"p\": null,\n \"min\": 7,\n \"max\": 7,\n \"pri\": 0\n },\n {\n \"c\": \"BG\",\n \"n\": \"Bulgaria\",\n \"d\": \"359\",\n \"f\": \"XX XXX XXX\",\n \"p\": \"0\",\n \"min\": 6,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"BF\",\n \"n\": \"Burkina Faso\",\n \"d\": \"226\",\n \"f\": \"XX XX XX XX\",\n \"p\": null,\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"BI\",\n \"n\": \"Burundi\",\n \"d\": \"257\",\n \"f\": \"XX XX XX XX\",\n \"p\": null,\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"KH\",\n \"n\": \"Cambodia\",\n \"d\": \"855\",\n \"f\": \"XX XXX XXX\",\n \"p\": \"0\",\n \"min\": 8,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"CM\",\n \"n\": \"Cameroon\",\n \"d\": \"237\",\n \"f\": \"X XX XX XX XX\",\n \"p\": null,\n \"min\": 9,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"CA\",\n \"n\": \"Canada\",\n \"d\": \"1\",\n \"f\": \"XXX XXX XXXX\",\n \"p\": \"1\",\n \"min\": 10,\n \"max\": 10,\n \"pri\": 7\n },\n {\n \"c\": \"CV\",\n \"n\": \"Cape Verde\",\n \"d\": \"238\",\n \"f\": \"XXX XX XX\",\n \"p\": null,\n \"min\": 7,\n \"max\": 7,\n \"pri\": 0\n },\n {\n \"c\": \"BQ\",\n \"n\": \"Caribbean Netherlands\",\n \"d\": \"599\",\n \"f\": \"XXX XXXX\",\n \"p\": null,\n \"min\": 7,\n \"max\": 7,\n \"pri\": 1\n },\n {\n \"c\": \"KY\",\n \"n\": \"Cayman Islands\",\n \"d\": \"1\",\n \"f\": \"XXX XXX XXXX\",\n \"p\": \"1\",\n \"min\": 10,\n \"max\": 10,\n \"pri\": 14\n },\n {\n \"c\": \"CF\",\n \"n\": \"Central African Republic\",\n \"d\": \"236\",\n \"f\": \"XX XX XX XX\",\n \"p\": null,\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"TD\",\n \"n\": \"Chad\",\n \"d\": \"235\",\n \"f\": \"XX XX XX XX\",\n \"p\": null,\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"CL\",\n \"n\": \"Chile\",\n \"d\": \"56\",\n \"f\": \"X XXXX XXXX\",\n \"p\": null,\n \"min\": 9,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"CN\",\n \"n\": \"China\",\n \"d\": \"86\",\n \"f\": \"XXX XXXX XXXX\",\n \"p\": \"0\",\n \"min\": 7,\n \"max\": 11,\n \"pri\": 0\n },\n {\n \"c\": \"CX\",\n \"n\": \"Christmas Island\",\n \"d\": \"61\",\n \"f\": \"XXX XXX XXX\",\n \"p\": \"0\",\n \"min\": 9,\n \"max\": 9,\n \"pri\": 2\n },\n {\n \"c\": \"CC\",\n \"n\": \"Cocos (Keeling) Islands\",\n \"d\": \"61\",\n \"f\": \"XXX XXX XXX\",\n \"p\": \"0\",\n \"min\": 9,\n \"max\": 9,\n \"pri\": 1\n },\n {\n \"c\": \"CO\",\n \"n\": \"Colombia\",\n \"d\": \"57\",\n \"f\": \"XXX XXXXXXX\",\n \"p\": \"0\",\n \"min\": 8,\n \"max\": 10,\n \"pri\": 0\n },\n {\n \"c\": \"KM\",\n \"n\": \"Comoros\",\n \"d\": \"269\",\n \"f\": \"XXX XX XX\",\n \"p\": null,\n \"min\": 7,\n \"max\": 7,\n \"pri\": 0\n },\n {\n \"c\": \"CG\",\n \"n\": \"Congo - Brazzaville\",\n \"d\": \"242\",\n \"f\": \"XX XXX XXXX\",\n \"p\": null,\n \"min\": 9,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"CD\",\n \"n\": \"Congo - Kinshasa\",\n \"d\": \"243\",\n \"f\": \"XXX XXX XXX\",\n \"p\": \"0\",\n \"min\": 7,\n \"max\": 10,\n \"pri\": 0\n },\n {\n \"c\": \"CK\",\n \"n\": \"Cook Islands\",\n \"d\": \"682\",\n \"f\": \"XX XXX\",\n \"p\": null,\n \"min\": 5,\n \"max\": 5,\n \"pri\": 0\n },\n {\n \"c\": \"CR\",\n \"n\": \"Costa Rica\",\n \"d\": \"506\",\n \"f\": \"XXXX XXXX\",\n \"p\": null,\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"CI\",\n \"n\": \"Côte d’Ivoire\",\n \"d\": \"225\",\n \"f\": \"XX XX XX XXXX\",\n \"p\": null,\n \"min\": 10,\n \"max\": 10,\n \"pri\": 0\n },\n {\n \"c\": \"HR\",\n \"n\": \"Croatia\",\n \"d\": \"385\",\n \"f\": \"XX XXX XXXX\",\n \"p\": \"0\",\n \"min\": 8,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"CU\",\n \"n\": \"Cuba\",\n \"d\": \"53\",\n \"f\": \"X XXXXXXX\",\n \"p\": \"0\",\n \"min\": 6,\n \"max\": 10,\n \"pri\": 0\n },\n {\n \"c\": \"CW\",\n \"n\": \"Curaçao\",\n \"d\": \"599\",\n \"f\": \"X XXX XXXX\",\n \"p\": null,\n \"min\": 7,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"CY\",\n \"n\": \"Cyprus\",\n \"d\": \"357\",\n \"f\": \"XX XXXXXX\",\n \"p\": null,\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"CZ\",\n \"n\": \"Czechia\",\n \"d\": \"420\",\n \"f\": \"XXX XXX XXX\",\n \"p\": null,\n \"min\": 9,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"DK\",\n \"n\": \"Denmark\",\n \"d\": \"45\",\n \"f\": \"XX XX XX XX\",\n \"p\": null,\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"DJ\",\n \"n\": \"Djibouti\",\n \"d\": \"253\",\n \"f\": \"XX XX XX XX\",\n \"p\": null,\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"DM\",\n \"n\": \"Dominica\",\n \"d\": \"1\",\n \"f\": \"XXX XXX XXXX\",\n \"p\": \"1\",\n \"min\": 10,\n \"max\": 10,\n \"pri\": 8\n },\n {\n \"c\": \"DO\",\n \"n\": \"Dominican Republic\",\n \"d\": \"1\",\n \"f\": \"XXX XXX XXXX\",\n \"p\": \"1\",\n \"min\": 10,\n \"max\": 10,\n \"pri\": 9\n },\n {\n \"c\": \"EC\",\n \"n\": \"Ecuador\",\n \"d\": \"593\",\n \"f\": \"XX XXX XXXX\",\n \"p\": \"0\",\n \"min\": 8,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"EG\",\n \"n\": \"Egypt\",\n \"d\": \"20\",\n \"f\": \"XX XXXXXXXX\",\n \"p\": \"0\",\n \"min\": 8,\n \"max\": 10,\n \"pri\": 0\n },\n {\n \"c\": \"SV\",\n \"n\": \"El Salvador\",\n \"d\": \"503\",\n \"f\": \"XXXX XXXX\",\n \"p\": null,\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"GQ\",\n \"n\": \"Equatorial Guinea\",\n \"d\": \"240\",\n \"f\": \"XXX XXX XXX\",\n \"p\": null,\n \"min\": 9,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"ER\",\n \"n\": \"Eritrea\",\n \"d\": \"291\",\n \"f\": \"X XXX XXX\",\n \"p\": \"0\",\n \"min\": 7,\n \"max\": 7,\n \"pri\": 0\n },\n {\n \"c\": \"EE\",\n \"n\": \"Estonia\",\n \"d\": \"372\",\n \"f\": \"XXX XXXX\",\n \"p\": null,\n \"min\": 7,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"SZ\",\n \"n\": \"Eswatini\",\n \"d\": \"268\",\n \"f\": \"XXXX XXXX\",\n \"p\": null,\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"ET\",\n \"n\": \"Ethiopia\",\n \"d\": \"251\",\n \"f\": \"XX XXX XXXX\",\n \"p\": \"0\",\n \"min\": 9,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"FK\",\n \"n\": \"Falkland Islands\",\n \"d\": \"500\",\n \"f\": null,\n \"p\": null,\n \"min\": 5,\n \"max\": 5,\n \"pri\": 0\n },\n {\n \"c\": \"FO\",\n \"n\": \"Faroe Islands\",\n \"d\": \"298\",\n \"f\": \"XXXXXX\",\n \"p\": null,\n \"min\": 6,\n \"max\": 6,\n \"pri\": 0\n },\n {\n \"c\": \"FJ\",\n \"n\": \"Fiji\",\n \"d\": \"679\",\n \"f\": \"XXX XXXX\",\n \"p\": null,\n \"min\": 7,\n \"max\": 7,\n \"pri\": 0\n },\n {\n \"c\": \"FI\",\n \"n\": \"Finland\",\n \"d\": \"358\",\n \"f\": \"XX XXXXXXX\",\n \"p\": \"0\",\n \"min\": 5,\n \"max\": 10,\n \"pri\": 0\n },\n {\n \"c\": \"FR\",\n \"n\": \"France\",\n \"d\": \"33\",\n \"f\": \"X XX XX XX XX\",\n \"p\": \"0\",\n \"min\": 9,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"GF\",\n \"n\": \"French Guiana\",\n \"d\": \"594\",\n \"f\": \"XXX XX XX XX\",\n \"p\": \"0\",\n \"min\": 9,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"PF\",\n \"n\": \"French Polynesia\",\n \"d\": \"689\",\n \"f\": \"XX XX XX XX\",\n \"p\": null,\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"GA\",\n \"n\": \"Gabon\",\n \"d\": \"241\",\n \"f\": \"XX XX XX XX\",\n \"p\": null,\n \"min\": 7,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"GM\",\n \"n\": \"Gambia\",\n \"d\": \"220\",\n \"f\": \"XXX XXXX\",\n \"p\": null,\n \"min\": 7,\n \"max\": 7,\n \"pri\": 0\n },\n {\n \"c\": \"GE\",\n \"n\": \"Georgia\",\n \"d\": \"995\",\n \"f\": \"XXX XX XX XX\",\n \"p\": \"0\",\n \"min\": 9,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"DE\",\n \"n\": \"Germany\",\n \"d\": \"49\",\n \"f\": \"XXXX XXXXXXX\",\n \"p\": \"0\",\n \"min\": 5,\n \"max\": 15,\n \"pri\": 0\n },\n {\n \"c\": \"GH\",\n \"n\": \"Ghana\",\n \"d\": \"233\",\n \"f\": \"XX XXX XXXX\",\n \"p\": \"0\",\n \"min\": 9,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"GI\",\n \"n\": \"Gibraltar\",\n \"d\": \"350\",\n \"f\": \"XXX XXXXX\",\n \"p\": null,\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"GR\",\n \"n\": \"Greece\",\n \"d\": \"30\",\n \"f\": \"XXX XXX XXXX\",\n \"p\": null,\n \"min\": 10,\n \"max\": 10,\n \"pri\": 0\n },\n {\n \"c\": \"GL\",\n \"n\": \"Greenland\",\n \"d\": \"299\",\n \"f\": \"XX XX XX\",\n \"p\": null,\n \"min\": 6,\n \"max\": 6,\n \"pri\": 0\n },\n {\n \"c\": \"GD\",\n \"n\": \"Grenada\",\n \"d\": \"1\",\n \"f\": \"XXX XXX XXXX\",\n \"p\": \"1\",\n \"min\": 10,\n \"max\": 10,\n \"pri\": 10\n },\n {\n \"c\": \"GP\",\n \"n\": \"Guadeloupe\",\n \"d\": \"590\",\n \"f\": \"XXX XX XX XX\",\n \"p\": \"0\",\n \"min\": 9,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"GU\",\n \"n\": \"Guam\",\n \"d\": \"1\",\n \"f\": \"XXX XXX XXXX\",\n \"p\": \"1\",\n \"min\": 10,\n \"max\": 10,\n \"pri\": 11\n },\n {\n \"c\": \"GT\",\n \"n\": \"Guatemala\",\n \"d\": \"502\",\n \"f\": \"XXXX XXXX\",\n \"p\": null,\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"GG\",\n \"n\": \"Guernsey\",\n \"d\": \"44\",\n \"f\": \"XXXX XXXXXX\",\n \"p\": \"0\",\n \"min\": 10,\n \"max\": 10,\n \"pri\": 1\n },\n {\n \"c\": \"GN\",\n \"n\": \"Guinea\",\n \"d\": \"224\",\n \"f\": \"XXX XX XX XX\",\n \"p\": null,\n \"min\": 8,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"GW\",\n \"n\": \"Guinea-Bissau\",\n \"d\": \"245\",\n \"f\": \"XXX XXX XXX\",\n \"p\": null,\n \"min\": 9,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"GY\",\n \"n\": \"Guyana\",\n \"d\": \"592\",\n \"f\": \"XXX XXXX\",\n \"p\": null,\n \"min\": 7,\n \"max\": 7,\n \"pri\": 0\n },\n {\n \"c\": \"HT\",\n \"n\": \"Haiti\",\n \"d\": \"509\",\n \"f\": \"XX XX XXXX\",\n \"p\": null,\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"HN\",\n \"n\": \"Honduras\",\n \"d\": \"504\",\n \"f\": \"XXXX XXXX\",\n \"p\": null,\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"HK\",\n \"n\": \"Hong Kong SAR China\",\n \"d\": \"852\",\n \"f\": \"XXXX XXXX\",\n \"p\": null,\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"HU\",\n \"n\": \"Hungary\",\n \"d\": \"36\",\n \"f\": \"XX XXX XXXX\",\n \"p\": \"06\",\n \"min\": 8,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"IS\",\n \"n\": \"Iceland\",\n \"d\": \"354\",\n \"f\": \"XXX XXXX\",\n \"p\": null,\n \"min\": 7,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"IN\",\n \"n\": \"India\",\n \"d\": \"91\",\n \"f\": \"XXXXX XXXXX\",\n \"p\": \"0\",\n \"min\": 10,\n \"max\": 10,\n \"pri\": 0\n },\n {\n \"c\": \"ID\",\n \"n\": \"Indonesia\",\n \"d\": \"62\",\n \"f\": \"XXX XXX XXX\",\n \"p\": \"0\",\n \"min\": 7,\n \"max\": 12,\n \"pri\": 0\n },\n {\n \"c\": \"IR\",\n \"n\": \"Iran\",\n \"d\": \"98\",\n \"f\": \"XXX XXX XXXX\",\n \"p\": \"0\",\n \"min\": 6,\n \"max\": 10,\n \"pri\": 0\n },\n {\n \"c\": \"IQ\",\n \"n\": \"Iraq\",\n \"d\": \"964\",\n \"f\": \"XXX XXX XXXX\",\n \"p\": \"0\",\n \"min\": 8,\n \"max\": 10,\n \"pri\": 0\n },\n {\n \"c\": \"IE\",\n \"n\": \"Ireland\",\n \"d\": \"353\",\n \"f\": \"XX XXX XXXX\",\n \"p\": \"0\",\n \"min\": 7,\n \"max\": 10,\n \"pri\": 0\n },\n {\n \"c\": \"IM\",\n \"n\": \"Isle of Man\",\n \"d\": \"44\",\n \"f\": \"XXXX XXXXXX\",\n \"p\": \"0\",\n \"min\": 10,\n \"max\": 10,\n \"pri\": 2\n },\n {\n \"c\": \"IL\",\n \"n\": \"Israel\",\n \"d\": \"972\",\n \"f\": \"XX XXX XXXX\",\n \"p\": \"0\",\n \"min\": 8,\n \"max\": 12,\n \"pri\": 0\n },\n {\n \"c\": \"IT\",\n \"n\": \"Italy\",\n \"d\": \"39\",\n \"f\": \"XXX XXX XXXX\",\n \"p\": null,\n \"min\": 6,\n \"max\": 12,\n \"pri\": 0\n },\n {\n \"c\": \"JM\",\n \"n\": \"Jamaica\",\n \"d\": \"1\",\n \"f\": \"XXX XXX XXXX\",\n \"p\": \"1\",\n \"min\": 10,\n \"max\": 10,\n \"pri\": 12\n },\n {\n \"c\": \"JP\",\n \"n\": \"Japan\",\n \"d\": \"81\",\n \"f\": \"XX XXXX XXXX\",\n \"p\": \"0\",\n \"min\": 9,\n \"max\": 10,\n \"pri\": 0\n },\n {\n \"c\": \"JE\",\n \"n\": \"Jersey\",\n \"d\": \"44\",\n \"f\": \"XXXX XXXXXX\",\n \"p\": \"0\",\n \"min\": 10,\n \"max\": 10,\n \"pri\": 3\n },\n {\n \"c\": \"JO\",\n \"n\": \"Jordan\",\n \"d\": \"962\",\n \"f\": \"X XXXX XXXX\",\n \"p\": \"0\",\n \"min\": 8,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"KZ\",\n \"n\": \"Kazakhstan\",\n \"d\": \"7\",\n \"f\": \"XXX XXX XXXX\",\n \"p\": \"8\",\n \"min\": 10,\n \"max\": 10,\n \"pri\": 1\n },\n {\n \"c\": \"KE\",\n \"n\": \"Kenya\",\n \"d\": \"254\",\n \"f\": \"XXX XXXXXX\",\n \"p\": \"0\",\n \"min\": 7,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"KI\",\n \"n\": \"Kiribati\",\n \"d\": \"686\",\n \"f\": null,\n \"p\": \"0\",\n \"min\": 5,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"XK\",\n \"n\": \"Kosovo\",\n \"d\": \"383\",\n \"f\": \"XX XXX XXX\",\n \"p\": \"0\",\n \"min\": 8,\n \"max\": 12,\n \"pri\": 0\n },\n {\n \"c\": \"KW\",\n \"n\": \"Kuwait\",\n \"d\": \"965\",\n \"f\": \"XXX XXXXX\",\n \"p\": null,\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"KG\",\n \"n\": \"Kyrgyzstan\",\n \"d\": \"996\",\n \"f\": \"XXX XXX XXX\",\n \"p\": \"0\",\n \"min\": 9,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"LA\",\n \"n\": \"Laos\",\n \"d\": \"856\",\n \"f\": \"XX XX XXX XXX\",\n \"p\": \"0\",\n \"min\": 8,\n \"max\": 10,\n \"pri\": 0\n },\n {\n \"c\": \"LV\",\n \"n\": \"Latvia\",\n \"d\": \"371\",\n \"f\": \"XX XXX XXX\",\n \"p\": null,\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"LB\",\n \"n\": \"Lebanon\",\n \"d\": \"961\",\n \"f\": \"XX XXX XXX\",\n \"p\": \"0\",\n \"min\": 7,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"LS\",\n \"n\": \"Lesotho\",\n \"d\": \"266\",\n \"f\": \"XXXX XXXX\",\n \"p\": null,\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"LR\",\n \"n\": \"Liberia\",\n \"d\": \"231\",\n \"f\": \"XX XXX XXXX\",\n \"p\": \"0\",\n \"min\": 7,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"LY\",\n \"n\": \"Libya\",\n \"d\": \"218\",\n \"f\": \"XX XXXXXXX\",\n \"p\": \"0\",\n \"min\": 9,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"LI\",\n \"n\": \"Liechtenstein\",\n \"d\": \"423\",\n \"f\": \"XXX XXX XXX\",\n \"p\": \"0\",\n \"min\": 7,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"LT\",\n \"n\": \"Lithuania\",\n \"d\": \"370\",\n \"f\": \"XXX XXXXX\",\n \"p\": \"0\",\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"LU\",\n \"n\": \"Luxembourg\",\n \"d\": \"352\",\n \"f\": \"XXX XXX XXX\",\n \"p\": null,\n \"min\": 4,\n \"max\": 11,\n \"pri\": 0\n },\n {\n \"c\": \"MO\",\n \"n\": \"Macao SAR China\",\n \"d\": \"853\",\n \"f\": \"XXXX XXXX\",\n \"p\": null,\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"MG\",\n \"n\": \"Madagascar\",\n \"d\": \"261\",\n \"f\": \"XX XX XXX XX\",\n \"p\": \"0\",\n \"min\": 9,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"MW\",\n \"n\": \"Malawi\",\n \"d\": \"265\",\n \"f\": \"XXX XX XX XX\",\n \"p\": \"0\",\n \"min\": 7,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"MY\",\n \"n\": \"Malaysia\",\n \"d\": \"60\",\n \"f\": \"XX XXX XXXX\",\n \"p\": \"0\",\n \"min\": 8,\n \"max\": 10,\n \"pri\": 0\n },\n {\n \"c\": \"MV\",\n \"n\": \"Maldives\",\n \"d\": \"960\",\n \"f\": \"XXX XXXX\",\n \"p\": null,\n \"min\": 7,\n \"max\": 7,\n \"pri\": 0\n },\n {\n \"c\": \"ML\",\n \"n\": \"Mali\",\n \"d\": \"223\",\n \"f\": \"XX XX XX XX\",\n \"p\": null,\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"MT\",\n \"n\": \"Malta\",\n \"d\": \"356\",\n \"f\": \"XXXX XXXX\",\n \"p\": null,\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"MH\",\n \"n\": \"Marshall Islands\",\n \"d\": \"692\",\n \"f\": \"XXX XXXX\",\n \"p\": \"1\",\n \"min\": 7,\n \"max\": 7,\n \"pri\": 0\n },\n {\n \"c\": \"MQ\",\n \"n\": \"Martinique\",\n \"d\": \"596\",\n \"f\": \"XXX XX XX XX\",\n \"p\": \"0\",\n \"min\": 9,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"MR\",\n \"n\": \"Mauritania\",\n \"d\": \"222\",\n \"f\": \"XX XX XX XX\",\n \"p\": null,\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"MU\",\n \"n\": \"Mauritius\",\n \"d\": \"230\",\n \"f\": \"XXXX XXXX\",\n \"p\": null,\n \"min\": 7,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"YT\",\n \"n\": \"Mayotte\",\n \"d\": \"262\",\n \"f\": \"XXX XX XX XX\",\n \"p\": \"0\",\n \"min\": 9,\n \"max\": 9,\n \"pri\": 1\n },\n {\n \"c\": \"MX\",\n \"n\": \"Mexico\",\n \"d\": \"52\",\n \"f\": \"XXX XXX XXXX\",\n \"p\": null,\n \"min\": 10,\n \"max\": 10,\n \"pri\": 0\n },\n {\n \"c\": \"FM\",\n \"n\": \"Micronesia\",\n \"d\": \"691\",\n \"f\": \"XXX XXXX\",\n \"p\": null,\n \"min\": 7,\n \"max\": 7,\n \"pri\": 0\n },\n {\n \"c\": \"MD\",\n \"n\": \"Moldova\",\n \"d\": \"373\",\n \"f\": \"XXX XX XXX\",\n \"p\": \"0\",\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"MC\",\n \"n\": \"Monaco\",\n \"d\": \"377\",\n \"f\": \"X XX XX XX XX\",\n \"p\": \"0\",\n \"min\": 8,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"MN\",\n \"n\": \"Mongolia\",\n \"d\": \"976\",\n \"f\": \"XXXX XXXX\",\n \"p\": \"0\",\n \"min\": 8,\n \"max\": 10,\n \"pri\": 0\n },\n {\n \"c\": \"ME\",\n \"n\": \"Montenegro\",\n \"d\": \"382\",\n \"f\": \"XX XXX XXX\",\n \"p\": \"0\",\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"MS\",\n \"n\": \"Montserrat\",\n \"d\": \"1\",\n \"f\": \"XXX XXX XXXX\",\n \"p\": \"1\",\n \"min\": 10,\n \"max\": 10,\n \"pri\": 17\n },\n {\n \"c\": \"MA\",\n \"n\": \"Morocco\",\n \"d\": \"212\",\n \"f\": \"X XX XX XX XX\",\n \"p\": \"0\",\n \"min\": 9,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"MZ\",\n \"n\": \"Mozambique\",\n \"d\": \"258\",\n \"f\": \"XX XXX XXXX\",\n \"p\": null,\n \"min\": 8,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"MM\",\n \"n\": \"Myanmar (Burma)\",\n \"d\": \"95\",\n \"f\": \"X XXX XXXX\",\n \"p\": \"0\",\n \"min\": 6,\n \"max\": 10,\n \"pri\": 0\n },\n {\n \"c\": \"NA\",\n \"n\": \"Namibia\",\n \"d\": \"264\",\n \"f\": \"XX XXX XXXX\",\n \"p\": \"0\",\n \"min\": 8,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"NR\",\n \"n\": \"Nauru\",\n \"d\": \"674\",\n \"f\": \"XXX XXXX\",\n \"p\": null,\n \"min\": 7,\n \"max\": 7,\n \"pri\": 0\n },\n {\n \"c\": \"NP\",\n \"n\": \"Nepal\",\n \"d\": \"977\",\n \"f\": \"XXX XXXXXXX\",\n \"p\": \"0\",\n \"min\": 8,\n \"max\": 10,\n \"pri\": 0\n },\n {\n \"c\": \"NL\",\n \"n\": \"Netherlands\",\n \"d\": \"31\",\n \"f\": \"X XXXXXXXX\",\n \"p\": \"0\",\n \"min\": 9,\n \"max\": 11,\n \"pri\": 0\n },\n {\n \"c\": \"NC\",\n \"n\": \"New Caledonia\",\n \"d\": \"687\",\n \"f\": \"XX XX XX\",\n \"p\": null,\n \"min\": 6,\n \"max\": 6,\n \"pri\": 0\n },\n {\n \"c\": \"NZ\",\n \"n\": \"New Zealand\",\n \"d\": \"64\",\n \"f\": \"XX XXX XXXX\",\n \"p\": \"0\",\n \"min\": 8,\n \"max\": 10,\n \"pri\": 0\n },\n {\n \"c\": \"NI\",\n \"n\": \"Nicaragua\",\n \"d\": \"505\",\n \"f\": \"XXXX XXXX\",\n \"p\": null,\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"NE\",\n \"n\": \"Niger\",\n \"d\": \"227\",\n \"f\": \"XX XX XX XX\",\n \"p\": null,\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"NG\",\n \"n\": \"Nigeria\",\n \"d\": \"234\",\n \"f\": \"XXX XXX XXXX\",\n \"p\": \"0\",\n \"min\": 10,\n \"max\": 10,\n \"pri\": 0\n },\n {\n \"c\": \"NU\",\n \"n\": \"Niue\",\n \"d\": \"683\",\n \"f\": \"XXX XXXX\",\n \"p\": null,\n \"min\": 4,\n \"max\": 7,\n \"pri\": 0\n },\n {\n \"c\": \"NF\",\n \"n\": \"Norfolk Island\",\n \"d\": \"672\",\n \"f\": \"X XXXXX\",\n \"p\": null,\n \"min\": 6,\n \"max\": 6,\n \"pri\": 0\n },\n {\n \"c\": \"KP\",\n \"n\": \"North Korea\",\n \"d\": \"850\",\n \"f\": \"XXX XXX XXXX\",\n \"p\": \"0\",\n \"min\": 8,\n \"max\": 10,\n \"pri\": 0\n },\n {\n \"c\": \"MK\",\n \"n\": \"North Macedonia\",\n \"d\": \"389\",\n \"f\": \"XX XXX XXX\",\n \"p\": \"0\",\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"MP\",\n \"n\": \"Northern Mariana Islands\",\n \"d\": \"1\",\n \"f\": \"XXX XXX XXXX\",\n \"p\": \"1\",\n \"min\": 10,\n \"max\": 10,\n \"pri\": 16\n },\n {\n \"c\": \"NO\",\n \"n\": \"Norway\",\n \"d\": \"47\",\n \"f\": \"XX XX XX XX\",\n \"p\": null,\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"OM\",\n \"n\": \"Oman\",\n \"d\": \"968\",\n \"f\": \"XXXX XXXX\",\n \"p\": null,\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"PK\",\n \"n\": \"Pakistan\",\n \"d\": \"92\",\n \"f\": \"XXX XXXXXXX\",\n \"p\": \"0\",\n \"min\": 9,\n \"max\": 10,\n \"pri\": 0\n },\n {\n \"c\": \"PW\",\n \"n\": \"Palau\",\n \"d\": \"680\",\n \"f\": \"XXX XXXX\",\n \"p\": null,\n \"min\": 7,\n \"max\": 7,\n \"pri\": 0\n },\n {\n \"c\": \"PS\",\n \"n\": \"Palestinian Territories\",\n \"d\": \"970\",\n \"f\": \"XXX XXX XXX\",\n \"p\": \"0\",\n \"min\": 8,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"PA\",\n \"n\": \"Panama\",\n \"d\": \"507\",\n \"f\": \"XXXX XXXX\",\n \"p\": null,\n \"min\": 7,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"PG\",\n \"n\": \"Papua New Guinea\",\n \"d\": \"675\",\n \"f\": \"XXXX XXXX\",\n \"p\": null,\n \"min\": 7,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"PY\",\n \"n\": \"Paraguay\",\n \"d\": \"595\",\n \"f\": \"XXX XXXXXX\",\n \"p\": \"0\",\n \"min\": 7,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"PE\",\n \"n\": \"Peru\",\n \"d\": \"51\",\n \"f\": \"XXX XXX XXX\",\n \"p\": \"0\",\n \"min\": 8,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"PH\",\n \"n\": \"Philippines\",\n \"d\": \"63\",\n \"f\": \"XXX XXX XXXX\",\n \"p\": \"0\",\n \"min\": 6,\n \"max\": 10,\n \"pri\": 0\n },\n {\n \"c\": \"PL\",\n \"n\": \"Poland\",\n \"d\": \"48\",\n \"f\": \"XXX XXX XXX\",\n \"p\": null,\n \"min\": 7,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"PT\",\n \"n\": \"Portugal\",\n \"d\": \"351\",\n \"f\": \"XXX XXX XXX\",\n \"p\": null,\n \"min\": 9,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"PR\",\n \"n\": \"Puerto Rico\",\n \"d\": \"1\",\n \"f\": \"XXX XXX XXXX\",\n \"p\": \"1\",\n \"min\": 10,\n \"max\": 10,\n \"pri\": 18\n },\n {\n \"c\": \"QA\",\n \"n\": \"Qatar\",\n \"d\": \"974\",\n \"f\": \"XXXX XXXX\",\n \"p\": null,\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"RE\",\n \"n\": \"Réunion\",\n \"d\": \"262\",\n \"f\": \"XXX XX XX XX\",\n \"p\": \"0\",\n \"min\": 9,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"RO\",\n \"n\": \"Romania\",\n \"d\": \"40\",\n \"f\": \"XXX XXX XXX\",\n \"p\": \"0\",\n \"min\": 6,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"RU\",\n \"n\": \"Russia\",\n \"d\": \"7\",\n \"f\": \"XXX XXX XX XX\",\n \"p\": \"8\",\n \"min\": 10,\n \"max\": 10,\n \"pri\": 0\n },\n {\n \"c\": \"RW\",\n \"n\": \"Rwanda\",\n \"d\": \"250\",\n \"f\": \"XXX XXX XXX\",\n \"p\": \"0\",\n \"min\": 8,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"WS\",\n \"n\": \"Samoa\",\n \"d\": \"685\",\n \"f\": \"XX XXXXX\",\n \"p\": null,\n \"min\": 5,\n \"max\": 10,\n \"pri\": 0\n },\n {\n \"c\": \"SM\",\n \"n\": \"San Marino\",\n \"d\": \"378\",\n \"f\": \"XX XX XX XX\",\n \"p\": null,\n \"min\": 8,\n \"max\": 10,\n \"pri\": 0\n },\n {\n \"c\": \"ST\",\n \"n\": \"São Tomé & Príncipe\",\n \"d\": \"239\",\n \"f\": \"XXX XXXX\",\n \"p\": null,\n \"min\": 7,\n \"max\": 7,\n \"pri\": 0\n },\n {\n \"c\": \"SA\",\n \"n\": \"Saudi Arabia\",\n \"d\": \"966\",\n \"f\": \"XX XXX XXXX\",\n \"p\": \"0\",\n \"min\": 9,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"SN\",\n \"n\": \"Senegal\",\n \"d\": \"221\",\n \"f\": \"XX XXX XX XX\",\n \"p\": null,\n \"min\": 9,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"RS\",\n \"n\": \"Serbia\",\n \"d\": \"381\",\n \"f\": \"XX XXXXXXX\",\n \"p\": \"0\",\n \"min\": 7,\n \"max\": 12,\n \"pri\": 0\n },\n {\n \"c\": \"SC\",\n \"n\": \"Seychelles\",\n \"d\": \"248\",\n \"f\": \"X XXX XXX\",\n \"p\": null,\n \"min\": 7,\n \"max\": 7,\n \"pri\": 0\n },\n {\n \"c\": \"SL\",\n \"n\": \"Sierra Leone\",\n \"d\": \"232\",\n \"f\": \"XX XXXXXX\",\n \"p\": \"0\",\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"SG\",\n \"n\": \"Singapore\",\n \"d\": \"65\",\n \"f\": \"XXXX XXXX\",\n \"p\": null,\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"SX\",\n \"n\": \"Sint Maarten\",\n \"d\": \"1\",\n \"f\": \"XXX XXX XXXX\",\n \"p\": \"1\",\n \"min\": 10,\n \"max\": 10,\n \"pri\": 19\n },\n {\n \"c\": \"SK\",\n \"n\": \"Slovakia\",\n \"d\": \"421\",\n \"f\": \"XXX XXX XXX\",\n \"p\": \"0\",\n \"min\": 6,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"SI\",\n \"n\": \"Slovenia\",\n \"d\": \"386\",\n \"f\": \"XX XXX XXX\",\n \"p\": \"0\",\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"SB\",\n \"n\": \"Solomon Islands\",\n \"d\": \"677\",\n \"f\": \"XX XXXXX\",\n \"p\": null,\n \"min\": 5,\n \"max\": 7,\n \"pri\": 0\n },\n {\n \"c\": \"SO\",\n \"n\": \"Somalia\",\n \"d\": \"252\",\n \"f\": \"X XXXXXXX\",\n \"p\": \"0\",\n \"min\": 6,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"ZA\",\n \"n\": \"South Africa\",\n \"d\": \"27\",\n \"f\": \"XX XXX XXXX\",\n \"p\": \"0\",\n \"min\": 5,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"KR\",\n \"n\": \"South Korea\",\n \"d\": \"82\",\n \"f\": \"XXXX XXXX\",\n \"p\": \"0\",\n \"min\": 5,\n \"max\": 10,\n \"pri\": 0\n },\n {\n \"c\": \"SS\",\n \"n\": \"South Sudan\",\n \"d\": \"211\",\n \"f\": \"XXX XXX XXX\",\n \"p\": \"0\",\n \"min\": 9,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"ES\",\n \"n\": \"Spain\",\n \"d\": \"34\",\n \"f\": \"XXX XX XX XX\",\n \"p\": null,\n \"min\": 9,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"LK\",\n \"n\": \"Sri Lanka\",\n \"d\": \"94\",\n \"f\": \"XX XXX XXXX\",\n \"p\": \"0\",\n \"min\": 9,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"BL\",\n \"n\": \"St. Barthélemy\",\n \"d\": \"590\",\n \"f\": \"XXX XX XX XX\",\n \"p\": \"0\",\n \"min\": 9,\n \"max\": 9,\n \"pri\": 1\n },\n {\n \"c\": \"SH\",\n \"n\": \"St. Helena\",\n \"d\": \"290\",\n \"f\": null,\n \"p\": null,\n \"min\": 4,\n \"max\": 5,\n \"pri\": 0\n },\n {\n \"c\": \"KN\",\n \"n\": \"St. Kitts & Nevis\",\n \"d\": \"1\",\n \"f\": \"XXX XXX XXXX\",\n \"p\": \"1\",\n \"min\": 10,\n \"max\": 10,\n \"pri\": 13\n },\n {\n \"c\": \"LC\",\n \"n\": \"St. Lucia\",\n \"d\": \"1\",\n \"f\": \"XXX XXX XXXX\",\n \"p\": \"1\",\n \"min\": 10,\n \"max\": 10,\n \"pri\": 15\n },\n {\n \"c\": \"MF\",\n \"n\": \"St. Martin\",\n \"d\": \"590\",\n \"f\": \"XXX XX XX XX\",\n \"p\": \"0\",\n \"min\": 9,\n \"max\": 9,\n \"pri\": 2\n },\n {\n \"c\": \"PM\",\n \"n\": \"St. Pierre & Miquelon\",\n \"d\": \"508\",\n \"f\": \"XX XX XX\",\n \"p\": \"0\",\n \"min\": 6,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"VC\",\n \"n\": \"St. Vincent & Grenadines\",\n \"d\": \"1\",\n \"f\": \"XXX XXX XXXX\",\n \"p\": \"1\",\n \"min\": 10,\n \"max\": 10,\n \"pri\": 22\n },\n {\n \"c\": \"SD\",\n \"n\": \"Sudan\",\n \"d\": \"249\",\n \"f\": \"XX XXX XXXX\",\n \"p\": \"0\",\n \"min\": 9,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"SR\",\n \"n\": \"Suriname\",\n \"d\": \"597\",\n \"f\": \"XXX XXXX\",\n \"p\": null,\n \"min\": 6,\n \"max\": 7,\n \"pri\": 0\n },\n {\n \"c\": \"SJ\",\n \"n\": \"Svalbard & Jan Mayen\",\n \"d\": \"47\",\n \"f\": \"XX XX XX XX\",\n \"p\": null,\n \"min\": 8,\n \"max\": 8,\n \"pri\": 1\n },\n {\n \"c\": \"SE\",\n \"n\": \"Sweden\",\n \"d\": \"46\",\n \"f\": \"XX XXX XX XX\",\n \"p\": \"0\",\n \"min\": 7,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"CH\",\n \"n\": \"Switzerland\",\n \"d\": \"41\",\n \"f\": \"XX XXX XX XX\",\n \"p\": \"0\",\n \"min\": 9,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"SY\",\n \"n\": \"Syria\",\n \"d\": \"963\",\n \"f\": \"XXX XXX XXX\",\n \"p\": \"0\",\n \"min\": 8,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"TW\",\n \"n\": \"Taiwan\",\n \"d\": \"886\",\n \"f\": \"XXX XXX XXX\",\n \"p\": \"0\",\n \"min\": 8,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"TJ\",\n \"n\": \"Tajikistan\",\n \"d\": \"992\",\n \"f\": \"XX XXX XXXX\",\n \"p\": null,\n \"min\": 9,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"TZ\",\n \"n\": \"Tanzania\",\n \"d\": \"255\",\n \"f\": \"XXX XXX XXX\",\n \"p\": \"0\",\n \"min\": 9,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"TH\",\n \"n\": \"Thailand\",\n \"d\": \"66\",\n \"f\": \"XX XXX XXXX\",\n \"p\": \"0\",\n \"min\": 8,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"TL\",\n \"n\": \"Timor-Leste\",\n \"d\": \"670\",\n \"f\": \"XXXX XXXX\",\n \"p\": null,\n \"min\": 7,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"TG\",\n \"n\": \"Togo\",\n \"d\": \"228\",\n \"f\": \"XX XX XX XX\",\n \"p\": null,\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"TK\",\n \"n\": \"Tokelau\",\n \"d\": \"690\",\n \"f\": null,\n \"p\": null,\n \"min\": 4,\n \"max\": 7,\n \"pri\": 0\n },\n {\n \"c\": \"TO\",\n \"n\": \"Tonga\",\n \"d\": \"676\",\n \"f\": \"XXX XXXX\",\n \"p\": null,\n \"min\": 5,\n \"max\": 7,\n \"pri\": 0\n },\n {\n \"c\": \"TT\",\n \"n\": \"Trinidad & Tobago\",\n \"d\": \"1\",\n \"f\": \"XXX XXX XXXX\",\n \"p\": \"1\",\n \"min\": 10,\n \"max\": 10,\n \"pri\": 21\n },\n {\n \"c\": \"TA\",\n \"n\": \"Tristan da Cunha\",\n \"d\": \"290\",\n \"f\": null,\n \"p\": null,\n \"min\": 4,\n \"max\": 4,\n \"pri\": 1\n },\n {\n \"c\": \"TN\",\n \"n\": \"Tunisia\",\n \"d\": \"216\",\n \"f\": \"XX XXX XXX\",\n \"p\": null,\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"TR\",\n \"n\": \"Türkiye\",\n \"d\": \"90\",\n \"f\": \"XXX XXX XX XX\",\n \"p\": \"0\",\n \"min\": 10,\n \"max\": 10,\n \"pri\": 0\n },\n {\n \"c\": \"TM\",\n \"n\": \"Turkmenistan\",\n \"d\": \"993\",\n \"f\": \"XX XXXXXX\",\n \"p\": \"8\",\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"TC\",\n \"n\": \"Turks & Caicos Islands\",\n \"d\": \"1\",\n \"f\": \"XXX XXX XXXX\",\n \"p\": \"1\",\n \"min\": 10,\n \"max\": 10,\n \"pri\": 20\n },\n {\n \"c\": \"TV\",\n \"n\": \"Tuvalu\",\n \"d\": \"688\",\n \"f\": \"XX XXXX\",\n \"p\": null,\n \"min\": 5,\n \"max\": 7,\n \"pri\": 0\n },\n {\n \"c\": \"VI\",\n \"n\": \"U.S. Virgin Islands\",\n \"d\": \"1\",\n \"f\": \"XXX XXX XXXX\",\n \"p\": \"1\",\n \"min\": 10,\n \"max\": 10,\n \"pri\": 24\n },\n {\n \"c\": \"UG\",\n \"n\": \"Uganda\",\n \"d\": \"256\",\n \"f\": \"XXX XXXXXX\",\n \"p\": \"0\",\n \"min\": 9,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"UA\",\n \"n\": \"Ukraine\",\n \"d\": \"380\",\n \"f\": \"XX XXX XXXX\",\n \"p\": \"0\",\n \"min\": 9,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"AE\",\n \"n\": \"United Arab Emirates\",\n \"d\": \"971\",\n \"f\": \"XX XXX XXXX\",\n \"p\": \"0\",\n \"min\": 8,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"GB\",\n \"n\": \"United Kingdom\",\n \"d\": \"44\",\n \"f\": \"XXXX XXXXXX\",\n \"p\": \"0\",\n \"min\": 9,\n \"max\": 10,\n \"pri\": 0\n },\n {\n \"c\": \"US\",\n \"n\": \"United States\",\n \"d\": \"1\",\n \"f\": \"XXX XXX XXXX\",\n \"p\": \"1\",\n \"min\": 10,\n \"max\": 10,\n \"pri\": 0\n },\n {\n \"c\": \"UY\",\n \"n\": \"Uruguay\",\n \"d\": \"598\",\n \"f\": \"XX XXX XXX\",\n \"p\": \"0\",\n \"min\": 8,\n \"max\": 8,\n \"pri\": 0\n },\n {\n \"c\": \"UZ\",\n \"n\": \"Uzbekistan\",\n \"d\": \"998\",\n \"f\": \"XX XXX XX XX\",\n \"p\": null,\n \"min\": 9,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"VU\",\n \"n\": \"Vanuatu\",\n \"d\": \"678\",\n \"f\": \"XXX XXXX\",\n \"p\": null,\n \"min\": 5,\n \"max\": 7,\n \"pri\": 0\n },\n {\n \"c\": \"VA\",\n \"n\": \"Vatican City\",\n \"d\": \"39\",\n \"f\": \"XXX XXX XXXX\",\n \"p\": null,\n \"min\": 6,\n \"max\": 11,\n \"pri\": 1\n },\n {\n \"c\": \"VE\",\n \"n\": \"Venezuela\",\n \"d\": \"58\",\n \"f\": \"XXX XXXXXXX\",\n \"p\": \"0\",\n \"min\": 10,\n \"max\": 10,\n \"pri\": 0\n },\n {\n \"c\": \"VN\",\n \"n\": \"Vietnam\",\n \"d\": \"84\",\n \"f\": \"XXX XXX XXX\",\n \"p\": \"0\",\n \"min\": 9,\n \"max\": 10,\n \"pri\": 0\n },\n {\n \"c\": \"WF\",\n \"n\": \"Wallis & Futuna\",\n \"d\": \"681\",\n \"f\": \"XX XX XX\",\n \"p\": null,\n \"min\": 6,\n \"max\": 6,\n \"pri\": 0\n },\n {\n \"c\": \"EH\",\n \"n\": \"Western Sahara\",\n \"d\": \"212\",\n \"f\": \"X XX XX XX XX\",\n \"p\": \"0\",\n \"min\": 9,\n \"max\": 9,\n \"pri\": 1\n },\n {\n \"c\": \"YE\",\n \"n\": \"Yemen\",\n \"d\": \"967\",\n \"f\": \"XXX XXX XXX\",\n \"p\": \"0\",\n \"min\": 7,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"ZM\",\n \"n\": \"Zambia\",\n \"d\": \"260\",\n \"f\": \"XX XXXXXXX\",\n \"p\": \"0\",\n \"min\": 9,\n \"max\": 9,\n \"pri\": 0\n },\n {\n \"c\": \"ZW\",\n \"n\": \"Zimbabwe\",\n \"d\": \"263\",\n \"f\": \"XX XXX XXXX\",\n \"p\": \"0\",\n \"min\": 5,\n \"max\": 10,\n \"pri\": 0\n }\n]\n","const TRAILING_SEP = /[\\s\\-]+$/;\nconst FALLBACK_GROUP = /(.{4})(?=.)/g;\nconst NON_ASCII_DIGITS = /[\\u0660-\\u0669\\u06F0-\\u06F9]/g;\n\nfunction isDigit(ch: string): boolean {\n const c = ch.charCodeAt(0);\n return c >= 48 && c <= 57;\n}\n\n/**\n * Format digits according to a country's format mask.\n * Mask uses X for digit positions, spaces/dashes as separators.\n * Overflow digits are appended unformatted.\n * Falls back to grouping every 4 digits when no mask is provided.\n */\nexport function formatPhone(digits: string, pattern: string | null): string {\n if (!digits) return '';\n\n if (!pattern) {\n return digits.replace(FALLBACK_GROUP, '$1 ');\n }\n\n let result = '';\n let digitIndex = 0;\n\n for (const char of pattern) {\n if (digitIndex >= digits.length) break;\n\n if (char === 'X') {\n result += digits[digitIndex++];\n } else {\n result += char;\n }\n }\n\n if (digitIndex < digits.length) {\n result += digits.slice(digitIndex);\n }\n\n return result.replace(TRAILING_SEP, '');\n}\n\n/**\n * Calculate new cursor position after formatting.\n * Counts digits before old cursor, finds same digit-count position in new value.\n */\nexport function getCursorPosition(\n oldValue: string,\n oldCursor: number,\n newValue: string,\n): number {\n let digitsBeforeCursor = 0;\n for (let i = 0; i < oldCursor && i < oldValue.length; i++) {\n if (isDigit(oldValue[i])) {\n digitsBeforeCursor++;\n }\n }\n\n let digitCount = 0;\n for (let i = 0; i < newValue.length; i++) {\n if (isDigit(newValue[i])) {\n digitCount++;\n }\n if (digitCount === digitsBeforeCursor) {\n return i + 1;\n }\n }\n\n return newValue.length;\n}\n\nexport function extractDigits(value: string): string {\n return value.replace(/\\D/g, '');\n}\n\n/**\n * Normalize Arabic-Indic (٠-٩) and Persian (۰-۹) numerals to ASCII (0-9).\n */\nexport function normalizeNumerals(value: string): string {\n return value.replace(NON_ASCII_DIGITS, (c) => {\n const code = c.charCodeAt(0);\n return code <= 0x0669\n ? String(code - 0x0660)\n : String(code - 0x06f0);\n });\n}\n","import type { Country, CountryData } from './types';\nimport rawData from '../../data/phone-countries.json';\nimport { extractDigits, normalizeNumerals } from './format';\n\n/**\n * Compute flag emoji from ISO 3166-1 alpha-2 code.\n * Each letter is offset to a regional indicator symbol: A→🇦, B→🇧, etc.\n */\nexport function getFlag(code: string): string {\n return String.fromCodePoint(\n ...[...code.toUpperCase()].map((c) => 0x1f1e6 + c.charCodeAt(0) - 65),\n );\n}\n\nexport function processCountryData(raw: CountryData[]): Country[] {\n return raw.map((d) => ({\n code: d.c,\n name: d.n,\n dialCode: d.d,\n format: d.f,\n nationalPrefix: d.p,\n minLength: d.min,\n maxLength: d.max,\n priority: d.pri,\n }));\n}\n\nexport function getCountryByCode(\n countries: Country[],\n code: string,\n): Country | undefined {\n const upper = code.toUpperCase();\n return countries.find((c) => c.code === upper);\n}\n\n// Lazy singleton for processed country data\nlet _allCountries: Country[] | null = null;\nexport function getAllCountries(): Country[] {\n if (!_allCountries) _allCountries = processCountryData(rawData as CountryData[]);\n return _allCountries;\n}\n\n/** Returns the highest-priority country for a shared dial code (e.g., US for +1) */\nexport function getCountryByDialCode(\n countries: Country[],\n dialCode: string,\n): Country | undefined {\n let best: Country | undefined;\n for (const c of countries) {\n if (c.dialCode !== dialCode) continue;\n if (!best || c.priority < best.priority) best = c;\n }\n return best;\n}\n\n/** Extract national number from an E.164 string, stripping dial code and national prefix. */\nexport function getNationalNumber(e164: string, countryCode?: string): string {\n if (!e164) return '';\n\n const all = getAllCountries();\n const normalized = normalizeNumerals(e164);\n const digits = extractDigits(normalized);\n\n let country: Country | undefined;\n\n if (countryCode) {\n country = getCountryByCode(all, countryCode);\n }\n\n if (!country && normalized.startsWith('+')) {\n for (let len = Math.min(4, digits.length); len >= 1; len--) {\n const prefix = digits.slice(0, len);\n const match = getCountryByDialCode(all, prefix);\n if (match) {\n country = match;\n break;\n }\n }\n }\n\n if (!country) return digits;\n\n let national = digits;\n if (normalized.startsWith('+') && digits.startsWith(country.dialCode)) {\n national = digits.slice(country.dialCode.length);\n }\n\n if (country.nationalPrefix && national.startsWith(country.nationalPrefix)) {\n const remaining = national.slice(country.nationalPrefix.length);\n if (remaining.length > 0) {\n national = remaining;\n }\n }\n\n return national;\n}\n","import type { Country, ValidationResult } from './types';\n\n/**\n * Validate a phone number's digit count against a country's min/max.\n * Digits should be the national number (excluding dial code and national prefix).\n */\nexport function validatePhone(\n digits: string,\n country: Country,\n): ValidationResult {\n const currentDigits = digits.length;\n const { minLength, maxLength } = country;\n\n if (currentDigits < minLength) {\n return {\n valid: false,\n reason: 'too_short',\n minDigits: minLength,\n maxDigits: maxLength,\n currentDigits,\n };\n }\n\n if (currentDigits > maxLength) {\n return {\n valid: false,\n reason: 'too_long',\n minDigits: minLength,\n maxDigits: maxLength,\n currentDigits,\n };\n }\n\n return {\n valid: true,\n minDigits: minLength,\n maxDigits: maxLength,\n currentDigits,\n };\n}\n","import type { Country } from '../core/types';\nimport { getFlag } from '../core/countries';\n\nexport interface DropdownOptions {\n countries: Country[];\n preferredCountries: string[];\n selectedCode: string;\n locale?: string;\n renderFlag?: (countryCode: string) => string;\n onSelect: (country: Country) => void;\n onClose: () => void;\n container: HTMLElement;\n}\n\nlet nextId = 0;\n\nexport class Dropdown {\n private id: number;\n private el: HTMLDivElement | null = null;\n private searchInput: HTMLInputElement | null = null;\n private listEl: HTMLUListElement | null = null;\n private liveRegion: HTMLDivElement | null = null;\n private highlightIndex = -1;\n private filteredItems: Country[] = [];\n private orderedCountries: Country[] | null = null;\n private searchTimeout: ReturnType<typeof setTimeout> | null = null;\n private ac: AbortController | null = null;\n private displayNames: Intl.DisplayNames | null = null;\n private options: DropdownOptions;\n\n constructor(options: DropdownOptions) {\n this.options = options;\n this.id = nextId++;\n if (options.locale && typeof Intl?.DisplayNames === 'function') {\n try {\n this.displayNames = new Intl.DisplayNames([options.locale], { type: 'region' });\n } catch {\n // fallback to English names\n }\n }\n }\n\n open(anchorEl: HTMLElement): void {\n if (this.el) return;\n\n this.ac = new AbortController();\n const signal = this.ac.signal;\n\n // Build dropdown DOM\n this.el = document.createElement('div');\n this.el.className = 'lpi__dropdown';\n this.el.setAttribute('role', 'dialog');\n this.el.setAttribute('aria-label', 'Select country');\n\n // Search input\n this.searchInput = document.createElement('input');\n this.searchInput.className = 'lpi__search';\n this.searchInput.type = 'text';\n this.searchInput.setAttribute('role', 'combobox');\n this.searchInput.setAttribute('aria-expanded', 'true');\n this.searchInput.setAttribute('aria-controls', `lpi-list-${this.id}`);\n this.searchInput.setAttribute('aria-autocomplete', 'list');\n this.searchInput.placeholder = 'Search...';\n this.el.appendChild(this.searchInput);\n\n // Live region\n this.liveRegion = document.createElement('div');\n this.liveRegion.className = 'lpi__sr-only';\n this.liveRegion.setAttribute('aria-live', 'polite');\n this.el.appendChild(this.liveRegion);\n\n // Country list\n this.listEl = document.createElement('ul');\n this.listEl.className = 'lpi__list';\n this.listEl.setAttribute('role', 'listbox');\n this.listEl.id = `lpi-list-${this.id}`;\n this.el.appendChild(this.listEl);\n\n // Build initial list\n this.filteredItems = this.getOrderedCountries();\n this.buildList();\n\n // Position and attach to container\n this.options.container.appendChild(this.el);\n this.position(anchorEl);\n\n // Check mobile fullscreen\n if (typeof window.matchMedia === 'function' &&\n window.matchMedia('(max-width: 500px), (pointer: coarse) and (max-height: 600px)').matches) {\n this.el.classList.add('lpi__dropdown--fullscreen');\n }\n\n // Focus search\n this.searchInput.focus();\n\n // Highlight selected country\n const selectedIdx = this.filteredItems.findIndex(c => c.code === this.options.selectedCode);\n if (selectedIdx >= 0) {\n this.updateHighlight(selectedIdx);\n }\n\n // Event listeners\n this.searchInput.addEventListener('input', () => this.handleSearchInput(), { signal });\n this.el.addEventListener('keydown', (e) => this.handleKeyDown(e), { signal });\n this.listEl.addEventListener('click', (e) => this.handleListClick(e), { signal });\n\n // Close triggers\n document.addEventListener('mousedown', (e) => this.handleClickOutside(e), { signal });\n this.setupScrollListeners(anchorEl, signal);\n }\n\n close(): void {\n if (!this.el) return;\n this.ac?.abort();\n this.ac = null;\n if (this.searchTimeout) {\n clearTimeout(this.searchTimeout);\n this.searchTimeout = null;\n }\n this.el.remove();\n this.el = null;\n this.searchInput = null;\n this.listEl = null;\n this.liveRegion = null;\n this.highlightIndex = -1;\n this.filteredItems = [];\n this.orderedCountries = null;\n }\n\n isOpen(): boolean {\n return this.el !== null;\n }\n\n setSelected(code: string): void {\n const prevCode = this.options.selectedCode;\n this.options.selectedCode = code;\n if (this.listEl) {\n // Update only the old and new selected elements\n if (prevCode) {\n const oldEl = this.listEl.querySelector<HTMLLIElement>(`[data-code=\"${prevCode}\"]`);\n if (oldEl) {\n oldEl.setAttribute('aria-selected', 'false');\n oldEl.classList.remove('lpi__option--selected');\n }\n }\n const newEl = this.listEl.querySelector<HTMLLIElement>(`[data-code=\"${code}\"]`);\n if (newEl) {\n newEl.setAttribute('aria-selected', 'true');\n newEl.classList.add('lpi__option--selected');\n }\n }\n }\n\n updateCountries(countries: Country[], preferredCountries: string[]): void {\n this.options.countries = countries;\n this.options.preferredCountries = preferredCountries;\n this.orderedCountries = null;\n }\n\n destroy(): void {\n this.close();\n }\n\n // --- Internal ---\n\n private getOrderedCountries(): Country[] {\n if (this.orderedCountries) return this.orderedCountries;\n\n const { countries, preferredCountries } = this.options;\n if (!preferredCountries.length) {\n this.orderedCountries = countries;\n return countries;\n }\n\n const prefSet = new Set(preferredCountries.map(c => c.toUpperCase()));\n const preferred: Country[] = [];\n const rest: Country[] = [];\n\n for (const c of countries) {\n if (prefSet.has(c.code)) {\n preferred.push(c);\n } else {\n rest.push(c);\n }\n }\n\n preferred.sort((a, b) => {\n return preferredCountries.indexOf(a.code) - preferredCountries.indexOf(b.code);\n });\n\n this.orderedCountries = [...preferred, ...rest];\n return this.orderedCountries;\n }\n\n private buildList(): void {\n if (!this.listEl) return;\n this.listEl.replaceChildren();\n\n const { preferredCountries, selectedCode } = this.options;\n const prefSet = preferredCountries.length > 0\n ? new Set(preferredCountries.map(c => c.toUpperCase()))\n : null;\n let addedSeparator = false;\n\n for (let i = 0; i < this.filteredItems.length; i++) {\n const country = this.filteredItems[i];\n\n // Insert separator after preferred countries\n if (!addedSeparator && prefSet && !prefSet.has(country.code)) {\n if (i > 0) {\n const sep = document.createElement('li');\n sep.className = 'lpi__separator';\n sep.setAttribute('role', 'separator');\n sep.innerHTML = '<hr>';\n this.listEl.appendChild(sep);\n }\n addedSeparator = true;\n }\n\n const li = document.createElement('li');\n li.className = 'lpi__option';\n if (country.code === selectedCode) li.classList.add('lpi__option--selected');\n li.setAttribute('role', 'option');\n li.setAttribute('aria-selected', country.code === selectedCode ? 'true' : 'false');\n li.dataset.code = country.code;\n li.id = `lpi-opt-${this.id}-${country.code}`;\n\n const flag = document.createElement('span');\n flag.className = 'lpi__flag';\n if (this.options.renderFlag) {\n flag.innerHTML = this.options.renderFlag(country.code);\n } else {\n flag.textContent = getFlag(country.code);\n }\n\n const name = document.createElement('span');\n name.className = 'lpi__option-name';\n name.textContent = this.getCountryName(country);\n\n const dial = document.createElement('span');\n dial.className = 'lpi__option-dial';\n dial.textContent = `+${country.dialCode}`;\n\n li.appendChild(flag);\n li.appendChild(name);\n li.appendChild(dial);\n this.listEl.appendChild(li);\n }\n\n this.updateLiveRegion();\n }\n\n private getCountryName(country: Country): string {\n if (this.displayNames) {\n try {\n return this.displayNames.of(country.code) ?? country.name;\n } catch {\n return country.name;\n }\n }\n return country.name;\n }\n\n /** 3-bucket search: exact code/dial → starts-with → contains */\n search(query: string): Country[] {\n if (!query) return this.getOrderedCountries();\n\n const q = query.trim().toLowerCase();\n const qUpper = q.toUpperCase();\n const ordered = this.getOrderedCountries();\n\n const exact: Country[] = [];\n const startsWith: Country[] = [];\n const contains: Country[] = [];\n\n for (const c of ordered) {\n const name = this.getCountryName(c).toLowerCase();\n\n if (c.code === qUpper || c.dialCode === q) {\n exact.push(c);\n } else if (name.startsWith(q)) {\n startsWith.push(c);\n } else if (name.includes(q)) {\n contains.push(c);\n }\n }\n\n return [...exact, ...startsWith, ...contains];\n }\n\n private handleSearchInput(): void {\n if (this.searchTimeout) clearTimeout(this.searchTimeout);\n this.searchTimeout = setTimeout(() => {\n const query = this.searchInput?.value ?? '';\n this.filteredItems = this.search(query);\n this.highlightIndex = -1;\n this.buildList();\n if (this.filteredItems.length > 0) {\n this.updateHighlight(0);\n }\n }, 100);\n }\n\n private handleKeyDown(e: KeyboardEvent): void {\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n if (this.filteredItems.length > 0) {\n const next = this.highlightIndex < this.filteredItems.length - 1\n ? this.highlightIndex + 1\n : 0;\n this.updateHighlight(next);\n }\n break;\n\n case 'ArrowUp':\n e.preventDefault();\n if (this.filteredItems.length > 0) {\n const prev = this.highlightIndex > 0\n ? this.highlightIndex - 1\n : this.filteredItems.length - 1;\n this.updateHighlight(prev);\n }\n break;\n\n case 'Enter':\n e.preventDefault();\n if (this.highlightIndex >= 0 && this.highlightIndex < this.filteredItems.length) {\n this.options.onSelect(this.filteredItems[this.highlightIndex]);\n }\n break;\n\n case 'Escape':\n e.preventDefault();\n this.options.onClose();\n break;\n\n case 'Tab':\n this.options.onClose();\n break;\n }\n }\n\n private handleListClick(e: Event): void {\n const target = (e.target as HTMLElement).closest<HTMLLIElement>('.lpi__option');\n if (!target?.dataset.code) return;\n const country = this.filteredItems.find(c => c.code === target.dataset.code);\n if (country) this.options.onSelect(country);\n }\n\n private handleClickOutside(e: MouseEvent): void {\n if (this.el && !this.el.contains(e.target as Node)) {\n this.options.onClose();\n }\n }\n\n private setupScrollListeners(anchorEl: HTMLElement, signal: AbortSignal): void {\n let node: HTMLElement | null = anchorEl.parentElement;\n while (node && node !== document.documentElement) {\n const ancestor = node;\n ancestor.addEventListener('scroll', () => {\n // Don't close if the scroll is from the dropdown itself\n if (this.el && this.el.contains(ancestor)) return;\n this.options.onClose();\n }, { signal, passive: true });\n node = node.parentElement;\n }\n }\n\n private position(anchorEl: HTMLElement): void {\n if (!this.el) return;\n\n const rect = anchorEl.getBoundingClientRect();\n const spaceBelow = window.innerHeight - rect.bottom;\n const spaceAbove = rect.top;\n\n // If rendering in a portal (document.body), use fixed-like absolute positioning\n const container = this.options.container;\n const isPortal = container === document.body;\n\n if (isPortal) {\n this.el.style.position = 'absolute';\n const scrollTop = window.scrollY;\n const scrollLeft = window.scrollX;\n const dropdownHeight = Math.min(300, spaceAbove);\n\n if (spaceBelow >= 300 || spaceBelow >= spaceAbove) {\n this.el.style.top = `${rect.bottom + scrollTop}px`;\n this.el.style.left = `${rect.left + scrollLeft}px`;\n this.el.classList.remove('lpi__dropdown--above');\n } else {\n this.el.style.top = `${rect.top + scrollTop - dropdownHeight}px`;\n this.el.style.left = `${rect.left + scrollLeft}px`;\n this.el.classList.add('lpi__dropdown--above');\n }\n this.el.style.width = `${Math.max(rect.width, 280)}px`;\n } else {\n // Relative to container\n if (spaceBelow >= 300 || spaceBelow >= spaceAbove) {\n this.el.classList.remove('lpi__dropdown--above');\n } else {\n this.el.classList.add('lpi__dropdown--above');\n }\n }\n }\n\n private updateHighlight(index: number): void {\n if (!this.listEl || !this.searchInput) return;\n\n // Remove old highlight\n if (this.highlightIndex >= 0) {\n const oldItem = this.getOptionElement(this.highlightIndex);\n oldItem?.classList.remove('lpi__option--highlighted');\n }\n\n this.highlightIndex = index;\n const item = this.getOptionElement(index);\n if (item) {\n item.classList.add('lpi__option--highlighted');\n item.scrollIntoView?.({ block: 'nearest' });\n this.searchInput.setAttribute('aria-activedescendant', item.id);\n }\n }\n\n private getOptionElement(index: number): HTMLLIElement | null {\n if (!this.listEl) return null;\n const options = this.listEl.querySelectorAll<HTMLLIElement>('.lpi__option');\n return options[index] ?? null;\n }\n\n private updateLiveRegion(): void {\n if (this.liveRegion) {\n const count = this.filteredItems.length;\n this.liveRegion.textContent = `${count} ${count === 1 ? 'result' : 'results'}`;\n }\n }\n}\n","import type { Country, PhoneInputOptions, ValidationResult } from '../core/types';\nimport { getAllCountries, getCountryByCode, getCountryByDialCode, getFlag } from '../core/countries';\nimport { formatPhone, getCursorPosition, extractDigits, normalizeNumerals } from '../core/format';\nimport { validatePhone } from '../core/validate';\nimport { Dropdown } from './dropdown';\n\nconst isClient = typeof window !== 'undefined';\n\nexport class PhoneInput {\n private el: HTMLElement;\n private opts: PhoneInputOptions;\n private countries: Country[];\n private selectedCountry: Country;\n private nationalDigits = '';\n private lastValidation: ValidationResult | null = null;\n private dropdown: Dropdown | null = null;\n private ac: AbortController;\n\n // DOM references\n private containerEl!: HTMLDivElement;\n private triggerEl!: HTMLButtonElement | HTMLSpanElement;\n private flagEl!: HTMLSpanElement;\n private dialCodeEl: HTMLSpanElement | null = null;\n private arrowEl: HTMLSpanElement | null = null;\n private inputEl!: HTMLInputElement;\n private hiddenPhoneEl: HTMLInputElement | null = null;\n private hiddenCountryEl: HTMLInputElement | null = null;\n\n private constructor(el: HTMLElement, options: PhoneInputOptions) {\n this.el = el;\n this.opts = { ...options };\n this.ac = new AbortController();\n\n // Filter countries\n this.countries = this.filterCountries(getAllCountries());\n\n // Resolve default country\n this.selectedCountry = this.resolveCountry(this.opts.defaultCountry) ?? this.countries[0];\n\n if (isClient) {\n this.buildDOM();\n this.attachListeners();\n\n // Process initial value\n if (this.opts.value) {\n this.setValueInternal(this.opts.value, false);\n }\n }\n }\n\n static mount(el: HTMLElement, options: PhoneInputOptions): PhoneInput {\n return new PhoneInput(el, options);\n }\n\n // --- Public API ---\n\n getValue(): string {\n if (!this.nationalDigits) return '';\n return `+${this.selectedCountry.dialCode}${this.nationalDigits}`;\n }\n\n getNationalNumber(): string {\n return this.nationalDigits;\n }\n\n getCountry(): { code: string; dialCode: string; name: string } {\n return {\n code: this.selectedCountry.code,\n dialCode: this.selectedCountry.dialCode,\n name: this.selectedCountry.name,\n };\n }\n\n setValue(e164: string): void {\n this.setValueInternal(e164, true);\n }\n\n setCountry(code: string): void {\n const country = this.resolveCountry(code);\n if (country) this.selectCountry(country, true);\n }\n\n isValid(): boolean {\n return this.validate().valid;\n }\n\n validate(): ValidationResult {\n return validatePhone(this.nationalDigits, this.selectedCountry);\n }\n\n setOptions(opts: Partial<PhoneInputOptions>): void {\n const prev = { ...this.opts };\n Object.assign(this.opts, opts);\n\n // Re-filter countries if filter options changed\n if (opts.allowedCountries !== undefined || opts.excludedCountries !== undefined) {\n this.countries = this.filterCountries(getAllCountries());\n // Ensure selected country is still in filtered list\n if (!this.countries.find(c => c.code === this.selectedCountry.code)) {\n this.selectCountry(this.countries[0], true);\n }\n if (this.dropdown) {\n this.dropdown.updateCountries(this.countries, this.opts.preferredCountries ?? []);\n }\n }\n\n if (opts.disabled !== undefined) {\n this.inputEl.disabled = !!opts.disabled;\n this.containerEl.classList.toggle('lpi--disabled', !!opts.disabled);\n if (this.triggerEl instanceof HTMLButtonElement) {\n this.triggerEl.disabled = !!opts.disabled;\n }\n }\n\n if (opts.separateDialCode !== undefined && opts.separateDialCode !== prev.separateDialCode) {\n this.updateDisplayMode();\n }\n\n if (opts.renderFlag !== undefined) {\n this.updateFlag();\n }\n\n if (opts.placeholder !== undefined) {\n this.updatePlaceholder();\n }\n\n if (opts.formatAsYouType !== undefined || opts.strict !== undefined) {\n this.reformatInput();\n }\n\n if (opts.allowDropdown !== undefined) {\n this.rebuildTrigger();\n }\n }\n\n destroy(): void {\n this.ac.abort();\n if (this.dropdown) {\n this.dropdown.destroy();\n this.dropdown = null;\n }\n this.el.innerHTML = '';\n }\n\n // --- DOM Construction ---\n\n private buildDOM(): void {\n this.containerEl = document.createElement('div');\n this.containerEl.className = 'lpi';\n if (this.opts.containerClass) {\n this.containerEl.className += ` ${this.opts.containerClass}`;\n }\n if (this.opts.separateDialCode) {\n this.containerEl.classList.add('lpi--separate-dial-code');\n }\n if (this.opts.disabled) {\n this.containerEl.classList.add('lpi--disabled');\n }\n\n // Build trigger (button or span)\n this.buildTrigger();\n\n // Build input\n this.inputEl = document.createElement('input');\n this.inputEl.className = 'lpi__input';\n this.inputEl.type = 'tel';\n this.inputEl.inputMode = 'tel';\n this.inputEl.autocomplete = 'tel';\n this.inputEl.dir = 'ltr';\n if (this.opts.disabled) this.inputEl.disabled = true;\n\n // Spread inputAttributes\n if (this.opts.inputAttributes) {\n for (const [key, value] of Object.entries(this.opts.inputAttributes)) {\n this.inputEl.setAttribute(key, value);\n }\n }\n\n this.updatePlaceholder();\n this.containerEl.appendChild(this.inputEl);\n\n // Hidden inputs\n if (this.opts.hiddenInput) {\n if (this.opts.hiddenInput.phone) {\n this.hiddenPhoneEl = document.createElement('input');\n this.hiddenPhoneEl.type = 'hidden';\n this.hiddenPhoneEl.name = this.opts.hiddenInput.phone;\n this.containerEl.appendChild(this.hiddenPhoneEl);\n }\n if (this.opts.hiddenInput.country) {\n this.hiddenCountryEl = document.createElement('input');\n this.hiddenCountryEl.type = 'hidden';\n this.hiddenCountryEl.name = this.opts.hiddenInput.country;\n this.hiddenCountryEl.value = this.selectedCountry.code;\n this.containerEl.appendChild(this.hiddenCountryEl);\n }\n }\n\n this.el.appendChild(this.containerEl);\n }\n\n private buildTrigger(): void {\n const allowDropdown = this.opts.allowDropdown !== false;\n\n if (allowDropdown) {\n const btn = document.createElement('button');\n btn.className = 'lpi__trigger';\n btn.type = 'button';\n btn.setAttribute('role', 'combobox');\n btn.setAttribute('aria-expanded', 'false');\n btn.setAttribute('aria-haspopup', 'listbox');\n btn.setAttribute('aria-label', 'Select country');\n if (this.opts.disabled) btn.disabled = true;\n this.triggerEl = btn;\n } else {\n const span = document.createElement('span');\n span.className = 'lpi__trigger';\n this.triggerEl = span;\n }\n\n this.flagEl = document.createElement('span');\n this.flagEl.className = 'lpi__flag';\n this.updateFlag();\n this.triggerEl.appendChild(this.flagEl);\n\n if (this.opts.separateDialCode) {\n this.dialCodeEl = document.createElement('span');\n this.dialCodeEl.className = 'lpi__dial-code';\n this.dialCodeEl.textContent = `+${this.selectedCountry.dialCode}`;\n this.triggerEl.appendChild(this.dialCodeEl);\n }\n\n if (allowDropdown) {\n this.arrowEl = document.createElement('span');\n this.arrowEl.className = 'lpi__arrow';\n this.arrowEl.textContent = '▼';\n this.triggerEl.appendChild(this.arrowEl);\n\n // Attach click listener directly to the trigger\n this.triggerEl.addEventListener('click', () => this.handleTriggerClick(), { signal: this.ac.signal });\n }\n\n this.containerEl.appendChild(this.triggerEl);\n }\n\n private rebuildTrigger(): void {\n this.triggerEl.remove();\n this.dialCodeEl = null;\n this.arrowEl = null;\n\n this.buildTrigger();\n this.containerEl.insertBefore(this.triggerEl, this.inputEl);\n }\n\n // --- Event Handling ---\n\n private attachListeners(): void {\n const signal = this.ac.signal;\n\n this.inputEl.addEventListener('input', (e) => this.handleInput(e as InputEvent), { signal });\n this.inputEl.addEventListener('keydown', (e) => this.handleKeyDown(e), { signal });\n this.inputEl.addEventListener('paste', (e) => this.handlePaste(e), { signal });\n }\n\n private handleInput(e: InputEvent): void {\n // Android sends e.key=\"Unidentified\" for +, so keydown can't filter it.\n // Fall back to InputEvent.data (same approach as intl-tel-input).\n if (this.opts.strict !== false && e.data === '+' && this.opts.separateDialCode) {\n this.inputEl.value = this.inputEl.value.replace('+', '');\n }\n\n const oldCursor = this.inputEl.selectionStart ?? 0;\n let raw = normalizeNumerals(this.inputEl.value);\n\n if (this.opts.separateDialCode) {\n // Input contains only national number\n let digits = extractDigits(raw);\n\n // Strip national prefix if typed at start\n digits = this.stripNationalPrefix(digits);\n\n // Enforce strict max length\n if (this.opts.strict !== false && digits.length > this.selectedCountry.maxLength) {\n digits = digits.slice(0, this.selectedCountry.maxLength);\n }\n\n this.nationalDigits = digits;\n\n // Format\n const formatted = this.opts.formatAsYouType !== false\n ? formatPhone(digits, this.selectedCountry.format)\n : digits;\n\n const newCursor = getCursorPosition(this.inputEl.value, oldCursor, formatted);\n this.inputEl.value = formatted;\n this.inputEl.setSelectionRange(newCursor, newCursor);\n } else {\n // Inline mode: input contains +{dialCode}{national}\n const digits = extractDigits(raw);\n const hasPlus = raw.startsWith('+');\n\n if (hasPlus && digits.length > 0) {\n // Try to detect country from dial code\n this.detectCountryFromDigits(digits);\n }\n\n // Extract national digits (remove dial code portion)\n let national = this.extractNationalFromFull(digits, hasPlus);\n national = this.stripNationalPrefix(national);\n\n // Enforce strict max length\n if (this.opts.strict !== false && national.length > this.selectedCountry.maxLength) {\n national = national.slice(0, this.selectedCountry.maxLength);\n }\n\n this.nationalDigits = national;\n\n // Format full display value\n const formatted = this.formatFullValue();\n const newCursor = getCursorPosition(this.inputEl.value, oldCursor, formatted);\n this.inputEl.value = formatted;\n this.inputEl.setSelectionRange(newCursor, newCursor);\n }\n\n this.syncHiddenInputs();\n this.fireCallbacks();\n }\n\n private handleKeyDown(e: KeyboardEvent): void {\n if (this.opts.strict === false) return;\n\n // Allow control keys\n if (\n e.key === 'Backspace' || e.key === 'Delete' || e.key === 'Tab' ||\n e.key === 'ArrowLeft' || e.key === 'ArrowRight' ||\n e.key === 'ArrowUp' || e.key === 'ArrowDown' ||\n e.key === 'Home' || e.key === 'End' ||\n e.ctrlKey || e.metaKey\n ) {\n return;\n }\n\n // Allow + at position 0 in inline mode\n if (!this.opts.separateDialCode && e.key === '+' && this.inputEl.selectionStart === 0) {\n return;\n }\n\n // Allow digits only\n if (e.key.length === 1 && !/\\d/.test(e.key)) {\n // Also allow Arabic-Indic and Persian numerals\n const code = e.key.charCodeAt(0);\n if (!((code >= 0x0660 && code <= 0x0669) || (code >= 0x06F0 && code <= 0x06F9))) {\n e.preventDefault();\n }\n }\n }\n\n private handlePaste(e: ClipboardEvent): void {\n e.preventDefault();\n const text = e.clipboardData?.getData('text') ?? '';\n if (!text) return;\n\n const cleaned = normalizeNumerals(text);\n let digits = cleaned.replace(/[^\\d]/g, '');\n const isInternational = cleaned.startsWith('+') || cleaned.startsWith('00');\n\n if (isInternational) {\n // Strip 00 prefix digits (already converted to plain digits by replace above)\n if (cleaned.startsWith('00')) {\n digits = digits.slice(2);\n }\n this.detectCountryFromDigits(digits);\n digits = this.extractNationalFromFull(digits, true);\n }\n\n digits = this.stripNationalPrefix(digits);\n\n if (this.opts.strict !== false && digits.length > this.selectedCountry.maxLength) {\n digits = digits.slice(0, this.selectedCountry.maxLength);\n }\n\n this.nationalDigits = digits;\n\n // Update display\n if (this.opts.separateDialCode) {\n this.inputEl.value = this.opts.formatAsYouType !== false\n ? formatPhone(this.nationalDigits, this.selectedCountry.format)\n : this.nationalDigits;\n } else {\n this.inputEl.value = this.formatFullValue();\n }\n\n this.syncHiddenInputs();\n this.fireCallbacks();\n }\n\n private handleTriggerClick(): void {\n if (this.opts.allowDropdown === false) return;\n\n if (this.dropdown) {\n this.closeDropdown();\n } else {\n this.openDropdown();\n }\n }\n\n // --- Dropdown ---\n\n private openDropdown(): void {\n if (this.dropdown) return;\n\n this.dropdown = new Dropdown({\n countries: this.countries,\n preferredCountries: this.opts.preferredCountries ?? [],\n selectedCode: this.selectedCountry.code,\n locale: this.opts.locale,\n renderFlag: this.opts.renderFlag,\n onSelect: (country) => {\n this.selectCountry(country, true);\n this.closeDropdown();\n this.inputEl.focus();\n },\n onClose: () => {\n this.closeDropdown();\n if (this.triggerEl instanceof HTMLButtonElement) {\n this.triggerEl.focus();\n }\n },\n container: this.opts.dropdownContainer ?? document.body,\n });\n\n this.dropdown.open(this.triggerEl);\n this.containerEl.classList.add('lpi--open');\n if (this.triggerEl instanceof HTMLButtonElement) {\n this.triggerEl.setAttribute('aria-expanded', 'true');\n }\n this.opts.onDropdownOpen?.();\n }\n\n private closeDropdown(): void {\n if (!this.dropdown) return;\n\n this.dropdown.close();\n this.dropdown = null;\n this.containerEl.classList.remove('lpi--open');\n if (this.triggerEl instanceof HTMLButtonElement) {\n this.triggerEl.setAttribute('aria-expanded', 'false');\n }\n this.opts.onDropdownClose?.();\n }\n\n // --- Country Logic ---\n\n private selectCountry(country: Country, fireEvent: boolean): void {\n const prev = this.selectedCountry;\n this.selectedCountry = country;\n\n this.updateFlag();\n this.updateDialCodeDisplay();\n this.reformatInput();\n this.updatePlaceholder();\n this.syncHiddenInputs();\n\n if (this.dropdown) {\n this.dropdown.setSelected(country.code);\n }\n\n if (fireEvent && prev.code !== country.code) {\n this.opts.onCountryChange?.(country);\n this.fireCallbacks();\n }\n }\n\n private detectCountryFromDigits(digits: string): void {\n // Try longest dial code first (up to 4 digits)\n for (let len = Math.min(4, digits.length); len >= 1; len--) {\n const prefix = digits.slice(0, len);\n const match = getCountryByDialCode(this.countries, prefix);\n if (match) {\n // If current country already matches this dial code, don't switch\n if (this.selectedCountry.dialCode === prefix) return;\n this.selectCountry(match, true);\n return;\n }\n }\n }\n\n private extractNationalFromFull(digits: string, hasInternationalPrefix: boolean): string {\n if (!hasInternationalPrefix) return digits;\n\n const dc = this.selectedCountry.dialCode;\n if (digits.startsWith(dc)) {\n return digits.slice(dc.length);\n }\n return digits;\n }\n\n private stripNationalPrefix(digits: string): string {\n const prefix = this.selectedCountry.nationalPrefix;\n if (prefix && digits.startsWith(prefix)) {\n // Only strip if remaining digits are sufficient (avoid stripping \"1\" from \"1\")\n const remaining = digits.slice(prefix.length);\n if (remaining.length > 0) {\n return remaining;\n }\n }\n return digits;\n }\n\n // --- Display ---\n\n private formatFullValue(): string {\n if (!this.nationalDigits) return '';\n const formatted = this.opts.formatAsYouType !== false\n ? formatPhone(this.nationalDigits, this.selectedCountry.format)\n : this.nationalDigits;\n return `+${this.selectedCountry.dialCode} ${formatted}`;\n }\n\n private updateFlag(): void {\n if (!this.flagEl) return;\n if (this.opts.renderFlag) {\n this.flagEl.innerHTML = this.opts.renderFlag(this.selectedCountry.code);\n } else {\n this.flagEl.textContent = getFlag(this.selectedCountry.code);\n }\n }\n\n private updateDialCodeDisplay(): void {\n if (this.dialCodeEl) {\n this.dialCodeEl.textContent = `+${this.selectedCountry.dialCode}`;\n }\n }\n\n private updatePlaceholder(): void {\n if (!this.inputEl) return;\n\n const placeholder = this.opts.placeholder;\n if (placeholder === 'auto' || placeholder === undefined) {\n // Generate from format mask\n const mask = this.selectedCountry.format;\n if (mask) {\n const example = mask.replace(/X/g, '0');\n if (this.opts.separateDialCode) {\n this.inputEl.placeholder = example;\n } else {\n this.inputEl.placeholder = `+${this.selectedCountry.dialCode} ${example}`;\n }\n } else {\n this.inputEl.placeholder = '';\n }\n } else if (placeholder) {\n this.inputEl.placeholder = placeholder;\n } else {\n this.inputEl.placeholder = '';\n }\n }\n\n private updateDisplayMode(): void {\n this.containerEl.classList.toggle('lpi--separate-dial-code', !!this.opts.separateDialCode);\n\n // Rebuild dial code element in trigger\n if (this.opts.separateDialCode && !this.dialCodeEl) {\n this.dialCodeEl = document.createElement('span');\n this.dialCodeEl.className = 'lpi__dial-code';\n this.dialCodeEl.textContent = `+${this.selectedCountry.dialCode}`;\n // Insert before arrow\n if (this.arrowEl) {\n this.triggerEl.insertBefore(this.dialCodeEl, this.arrowEl);\n } else {\n this.triggerEl.appendChild(this.dialCodeEl);\n }\n } else if (!this.opts.separateDialCode && this.dialCodeEl) {\n this.dialCodeEl.remove();\n this.dialCodeEl = null;\n }\n\n this.reformatInput();\n this.updatePlaceholder();\n }\n\n private reformatInput(): void {\n if (!this.inputEl) return;\n\n if (this.opts.separateDialCode) {\n this.inputEl.value = this.opts.formatAsYouType !== false\n ? formatPhone(this.nationalDigits, this.selectedCountry.format)\n : this.nationalDigits;\n } else {\n this.inputEl.value = this.formatFullValue();\n }\n }\n\n // --- Helpers ---\n\n private filterCountries(all: Country[]): Country[] {\n let filtered = all;\n\n if (this.opts.allowedCountries?.length) {\n const allowed = new Set(this.opts.allowedCountries.map(c => c.toUpperCase()));\n filtered = filtered.filter(c => allowed.has(c.code));\n }\n\n if (this.opts.excludedCountries?.length) {\n const excluded = new Set(this.opts.excludedCountries.map(c => c.toUpperCase()));\n filtered = filtered.filter(c => !excluded.has(c.code));\n }\n\n return filtered;\n }\n\n private resolveCountry(code: string): Country | undefined {\n return getCountryByCode(this.countries, code);\n }\n\n private setValueInternal(e164: string, updateInput: boolean): void {\n if (!e164) {\n this.nationalDigits = '';\n if (updateInput) this.reformatInput();\n this.syncHiddenInputs();\n this.fireCallbacks();\n return;\n }\n\n let digits = extractDigits(normalizeNumerals(e164));\n const hasPlus = e164.startsWith('+');\n\n if (hasPlus) {\n this.detectCountryFromDigits(digits);\n digits = this.extractNationalFromFull(digits, true);\n }\n\n digits = this.stripNationalPrefix(digits);\n this.nationalDigits = digits;\n\n if (updateInput) this.reformatInput();\n this.syncHiddenInputs();\n this.fireCallbacks();\n }\n\n private syncHiddenInputs(): void {\n if (this.hiddenPhoneEl) {\n this.hiddenPhoneEl.value = this.getValue();\n }\n if (this.hiddenCountryEl) {\n this.hiddenCountryEl.value = this.selectedCountry.code;\n }\n }\n\n private fireCallbacks(): void {\n const v = validatePhone(this.nationalDigits, this.selectedCountry);\n const e164 = this.getValue();\n\n this.opts.onChange?.(e164, this.selectedCountry, v);\n\n if (this.lastValidation === null || v.valid !== this.lastValidation.valid) {\n this.opts.onValidationChange?.(v);\n }\n\n this.lastValidation = v;\n }\n}\n"],"mappings":";AAAA;AAAA,EACE;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,GAAK;AAAA,IACL,KAAO;AAAA,IACP,KAAO;AAAA,IACP,KAAO;AAAA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","names":[]}
package/package.json ADDED
@@ -0,0 +1,93 @@
1
+ {
2
+ "name": "lite-phone-input",
3
+ "version": "0.1.0",
4
+ "description": "Lightweight phone input with formatting, validation, and emoji flags — ~13KB gzipped",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/core/index.d.ts",
10
+ "import": "./dist/core/index.js",
11
+ "require": "./dist/core/index.cjs"
12
+ },
13
+ "./vanilla": {
14
+ "types": "./dist/vanilla/index.d.ts",
15
+ "import": "./dist/vanilla/index.js",
16
+ "require": "./dist/vanilla/index.cjs"
17
+ },
18
+ "./react": {
19
+ "types": "./dist/react/index.d.ts",
20
+ "import": "./dist/react/index.js",
21
+ "require": "./dist/react/index.cjs"
22
+ },
23
+ "./preact": {
24
+ "types": "./dist/preact/index.d.ts",
25
+ "import": "./dist/preact/index.js",
26
+ "require": "./dist/preact/index.cjs"
27
+ },
28
+ "./styles": "./dist/styles.css",
29
+ "./data": "./data/phone-countries.json"
30
+ },
31
+ "main": "./dist/core/index.cjs",
32
+ "module": "./dist/core/index.js",
33
+ "types": "./dist/core/index.d.ts",
34
+ "files": [
35
+ "dist",
36
+ "data"
37
+ ],
38
+ "scripts": {
39
+ "build": "tsup",
40
+ "dev": "tsup --watch",
41
+ "test": "vitest run",
42
+ "test:watch": "vitest",
43
+ "test:coverage": "vitest run --coverage",
44
+ "typecheck": "tsc --noEmit",
45
+ "generate-data": "node scripts/generate-data.mjs",
46
+ "example": "npm run build && open examples/vanilla.html",
47
+ "prepublishOnly": "npm run build"
48
+ },
49
+ "peerDependencies": {
50
+ "preact": ">=10",
51
+ "react": ">=17"
52
+ },
53
+ "peerDependenciesMeta": {
54
+ "react": {
55
+ "optional": true
56
+ },
57
+ "preact": {
58
+ "optional": true
59
+ }
60
+ },
61
+ "devDependencies": {
62
+ "@types/node": "^25.5.0",
63
+ "@types/react": "^19.2.14",
64
+ "@types/react-dom": "^19.2.3",
65
+ "jsdom": "^29.0.1",
66
+ "preact": "^10.29.0",
67
+ "react": "^19.2.4",
68
+ "react-dom": "^19.2.4",
69
+ "tsup": "^8.5.1",
70
+ "typescript": "^5.9.3",
71
+ "vitest": "^4.1.0"
72
+ },
73
+ "keywords": [
74
+ "phone",
75
+ "input",
76
+ "telephone",
77
+ "international",
78
+ "country",
79
+ "dial-code",
80
+ "e164",
81
+ "formatting",
82
+ "validation",
83
+ "emoji-flags",
84
+ "lightweight"
85
+ ],
86
+ "repository": {
87
+ "type": "git",
88
+ "url": "https://github.com/wp-sms/lite-phone-input"
89
+ },
90
+ "sideEffects": [
91
+ "*.css"
92
+ ]
93
+ }