UNPKG

@eristack/iso-3166

Version:

ISO 3166-1 country codes and ISO 3166-2 subdivision normalization — assigned alpha-2/alpha-3 registry

1 lines • 19 kB
{"version":3,"sources":["../src/index.ts","../src/core/errors.ts","../src/core/alpha2-codes.ts","../src/core/alpha2.ts","../src/core/alpha3-map.ts","../src/core/alpha3.ts","../src/core/subdivision.ts"],"sourcesContent":["export { CountryCodeError } from \"./core/errors.js\";\nexport {\n ISO_3166_1_ALPHA2_CODES,\n ISO_3166_1_ALPHA2_SET,\n type AssignedAlpha2,\n} from \"./core/alpha2-codes.js\";\nexport {\n compareAlpha2,\n isAssignedAlpha2,\n listAssignedAlpha2,\n normalizeAlpha2,\n} from \"./core/alpha2.js\";\nexport { alpha2ToAlpha3, alpha3ToAlpha2 } from \"./core/alpha3.js\";\nexport { normalizeSubdivisionCode } from \"./core/subdivision.js\";\nexport type {\n CountryCodeAlpha2,\n CountryCodeAlpha3,\n SubdivisionCode,\n} from \"./core/types.js\";\n","export class CountryCodeError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"CountryCodeError\";\n }\n}\n","/** ISO 3166-1 alpha-2 assigned codes (including user-assigned and exceptional reservations). */\nexport const ISO_3166_1_ALPHA2_CODES = [\n \"AD\", \"AE\", \"AF\", \"AG\", \"AI\", \"AL\", \"AM\", \"AO\", \"AQ\", \"AR\", \"AS\", \"AT\", \"AU\", \"AW\", \"AX\", \"AZ\",\n \"BA\", \"BB\", \"BD\", \"BE\", \"BF\", \"BG\", \"BH\", \"BI\", \"BJ\", \"BL\", \"BM\", \"BN\", \"BO\", \"BQ\", \"BR\", \"BS\",\n \"BT\", \"BV\", \"BW\", \"BY\", \"BZ\", \"CA\", \"CC\", \"CD\", \"CF\", \"CG\", \"CH\", \"CI\", \"CK\", \"CL\", \"CM\", \"CN\",\n \"CO\", \"CR\", \"CU\", \"CV\", \"CW\", \"CX\", \"CY\", \"CZ\", \"DE\", \"DJ\", \"DK\", \"DM\", \"DO\", \"DZ\", \"EC\", \"EE\",\n \"EG\", \"EH\", \"ER\", \"ES\", \"ET\", \"FI\", \"FJ\", \"FK\", \"FM\", \"FO\", \"FR\", \"GA\", \"GB\", \"GD\", \"GE\", \"GF\",\n \"GG\", \"GH\", \"GI\", \"GL\", \"GM\", \"GN\", \"GP\", \"GQ\", \"GR\", \"GS\", \"GT\", \"GU\", \"GW\", \"GY\", \"HK\", \"HM\",\n \"HN\", \"HR\", \"HT\", \"HU\", \"ID\", \"IE\", \"IL\", \"IM\", \"IN\", \"IO\", \"IQ\", \"IR\", \"IS\", \"IT\", \"JE\", \"JM\",\n \"JO\", \"JP\", \"KE\", \"KG\", \"KH\", \"KI\", \"KM\", \"KN\", \"KP\", \"KR\", \"KW\", \"KY\", \"KZ\", \"LA\", \"LB\", \"LC\",\n \"LI\", \"LK\", \"LR\", \"LS\", \"LT\", \"LU\", \"LV\", \"LY\", \"MA\", \"MC\", \"MD\", \"ME\", \"MF\", \"MG\", \"MH\", \"MK\",\n \"ML\", \"MM\", \"MN\", \"MO\", \"MP\", \"MQ\", \"MR\", \"MS\", \"MT\", \"MU\", \"MV\", \"MW\", \"MX\", \"MY\", \"MZ\", \"NA\",\n \"NC\", \"NE\", \"NF\", \"NG\", \"NI\", \"NL\", \"NO\", \"NP\", \"NR\", \"NU\", \"NZ\", \"OM\", \"PA\", \"PE\", \"PF\", \"PG\",\n \"PH\", \"PK\", \"PL\", \"PM\", \"PN\", \"PR\", \"PS\", \"PT\", \"PW\", \"PY\", \"QA\", \"RE\", \"RO\", \"RS\", \"RU\", \"RW\",\n \"SA\", \"SB\", \"SC\", \"SD\", \"SE\", \"SG\", \"SH\", \"SI\", \"SJ\", \"SK\", \"SL\", \"SM\", \"SN\", \"SO\", \"SR\", \"SS\",\n \"ST\", \"SV\", \"SX\", \"SY\", \"SZ\", \"TC\", \"TD\", \"TF\", \"TG\", \"TH\", \"TJ\", \"TK\", \"TL\", \"TM\", \"TN\", \"TO\",\n \"TR\", \"TT\", \"TV\", \"TW\", \"TZ\", \"UA\", \"UG\", \"UM\", \"US\", \"UY\", \"UZ\", \"VA\", \"VC\", \"VE\", \"VG\", \"VI\",\n \"VN\", \"VU\", \"WF\", \"WS\", \"XK\", \"YE\", \"YT\", \"ZA\", \"ZM\", \"ZW\",\n] as const;\n\nexport type AssignedAlpha2 = (typeof ISO_3166_1_ALPHA2_CODES)[number];\n\nexport const ISO_3166_1_ALPHA2_SET: ReadonlySet<string> = new Set(\n ISO_3166_1_ALPHA2_CODES,\n);\n","import { ISO_3166_1_ALPHA2_SET, ISO_3166_1_ALPHA2_CODES } from \"./alpha2-codes.js\";\nimport { CountryCodeError } from \"./errors.js\";\nimport type { CountryCodeAlpha2 } from \"./types.js\";\n\nconst ALPHA2_FORMAT = /^[A-Z]{2}$/;\n\n/** True when `code` is an assigned ISO 3166-1 alpha-2 code (after trim/uppercase). */\nexport function isAssignedAlpha2(code: string): boolean {\n const upper = code.trim().toUpperCase();\n return ALPHA2_FORMAT.test(upper) && ISO_3166_1_ALPHA2_SET.has(upper);\n}\n\n/** Normalize to assigned alpha-2 or throw `CountryCodeError`. */\nexport function normalizeAlpha2(code: string): CountryCodeAlpha2 {\n const upper = code.trim().toUpperCase();\n if (!ALPHA2_FORMAT.test(upper)) {\n throw new CountryCodeError(\n `Invalid country code \"${code}\" — expected ISO 3166-1 alpha-2 (two letters)`,\n );\n }\n if (!ISO_3166_1_ALPHA2_SET.has(upper)) {\n throw new CountryCodeError(\n `Country code \"${upper}\" is not an assigned ISO 3166-1 alpha-2 code`,\n );\n }\n return upper as CountryCodeAlpha2;\n}\n\n/** Readonly list of assigned alpha-2 codes (stable order). */\nexport function listAssignedAlpha2(): readonly string[] {\n return ISO_3166_1_ALPHA2_CODES;\n}\n\nexport function compareAlpha2(a: string, b: string): number {\n return normalizeAlpha2(a).localeCompare(normalizeAlpha2(b));\n}\n","import type { AssignedAlpha2 } from \"./alpha2-codes.js\";\n\n/** ISO 3166-1 alpha-3 → alpha-2 (assigned codes). */\nexport const ISO_3166_1_ALPHA3_TO_ALPHA2: Record<string, AssignedAlpha2> = {\n AFG: \"AF\", ALA: \"AX\", ALB: \"AL\", DZA: \"DZ\", ASM: \"AS\", AND: \"AD\", AGO: \"AO\", AIA: \"AI\",\n ATA: \"AQ\", ATG: \"AG\", ARG: \"AR\", ARM: \"AM\", ABW: \"AW\", AUS: \"AU\", AUT: \"AT\", AZE: \"AZ\",\n BHS: \"BS\", BHR: \"BH\", BGD: \"BD\", BRB: \"BB\", BLR: \"BY\", BEL: \"BE\", BLZ: \"BZ\", BEN: \"BJ\",\n BMU: \"BM\", BTN: \"BT\", BOL: \"BO\", BES: \"BQ\", BIH: \"BA\", BWA: \"BW\", BVT: \"BV\", BRA: \"BR\",\n IOT: \"IO\", BRN: \"BN\", BGR: \"BG\", BFA: \"BF\", BDI: \"BI\", CPV: \"CV\", KHM: \"KH\", CMR: \"CM\",\n CAN: \"CA\", CYM: \"KY\", CAF: \"CF\", TCD: \"TD\", CHL: \"CL\", CHN: \"CN\", CXR: \"CX\", CCK: \"CC\",\n COL: \"CO\", COM: \"KM\", COD: \"CD\", COG: \"CG\", COK: \"CK\", CRI: \"CR\", CIV: \"CI\", HRV: \"HR\",\n CUB: \"CU\", CUW: \"CW\", CYP: \"CY\", CZE: \"CZ\", DNK: \"DK\", DJI: \"DJ\", DMA: \"DM\", DOM: \"DO\",\n ECU: \"EC\", EGY: \"EG\", SLV: \"SV\", GNQ: \"GQ\", ERI: \"ER\", EST: \"EE\", SWZ: \"SZ\", ETH: \"ET\",\n FLK: \"FK\", FRO: \"FO\", FJI: \"FJ\", FIN: \"FI\", FRA: \"FR\", GUF: \"GF\", PYF: \"PF\", ATF: \"TF\",\n GAB: \"GA\", GMB: \"GM\", GEO: \"GE\", DEU: \"DE\", GHA: \"GH\", GIB: \"GI\", GRC: \"GR\", GRL: \"GL\",\n GRD: \"GD\", GLP: \"GP\", GUM: \"GU\", GTM: \"GT\", GGY: \"GG\", GIN: \"GN\", GNB: \"GW\", GUY: \"GY\",\n HTI: \"HT\", HMD: \"HM\", VAT: \"VA\", HND: \"HN\", HKG: \"HK\", HUN: \"HU\", ISL: \"IS\", IND: \"IN\",\n IDN: \"ID\", IRN: \"IR\", IRQ: \"IQ\", IRL: \"IE\", IMN: \"IM\", ISR: \"IL\", ITA: \"IT\", JAM: \"JM\",\n JPN: \"JP\", JEY: \"JE\", JOR: \"JO\", KAZ: \"KZ\", KEN: \"KE\", KIR: \"KI\", PRK: \"KP\", KOR: \"KR\",\n KWT: \"KW\", KGZ: \"KG\", LAO: \"LA\", LVA: \"LV\", LBN: \"LB\", LSO: \"LS\", LBR: \"LR\", LBY: \"LY\",\n LIE: \"LI\", LTU: \"LT\", LUX: \"LU\", MAC: \"MO\", MDG: \"MG\", MWI: \"MW\", MYS: \"MY\", MDV: \"MV\",\n MLI: \"ML\", MLT: \"MT\", MHL: \"MH\", MTQ: \"MQ\", MRT: \"MR\", MUS: \"MU\", MYT: \"YT\", MEX: \"MX\",\n FSM: \"FM\", MDA: \"MD\", MCO: \"MC\", MNG: \"MN\", MNE: \"ME\", MSR: \"MS\", MAR: \"MA\", MOZ: \"MZ\",\n MMR: \"MM\", NAM: \"NA\", NRU: \"NR\", NPL: \"NP\", NLD: \"NL\", NCL: \"NC\", NZL: \"NZ\", NIC: \"NI\",\n NER: \"NE\", NGA: \"NG\", NIU: \"NU\", NFK: \"NF\", MKD: \"MK\", MNP: \"MP\", NOR: \"NO\", OMN: \"OM\",\n PAK: \"PK\", PLW: \"PW\", PSE: \"PS\", PAN: \"PA\", PNG: \"PG\", PRY: \"PY\", PER: \"PE\", PHL: \"PH\",\n PCN: \"PN\", POL: \"PL\", PRT: \"PT\", PRI: \"PR\", QAT: \"QA\", REU: \"RE\", ROU: \"RO\", RUS: \"RU\",\n RWA: \"RW\", BLM: \"BL\", SHN: \"SH\", KNA: \"KN\", LCA: \"LC\", MAF: \"MF\", SPM: \"PM\", VCT: \"VC\",\n WSM: \"WS\", SMR: \"SM\", STP: \"ST\", SAU: \"SA\", SEN: \"SN\", SRB: \"RS\", SYC: \"SC\", SLE: \"SL\",\n SGP: \"SG\", SXM: \"SX\", SVK: \"SK\", SVN: \"SI\", SLB: \"SB\", SOM: \"SO\", ZAF: \"ZA\", SGS: \"GS\",\n SSD: \"SS\", ESP: \"ES\", LKA: \"LK\", SDN: \"SD\", SUR: \"SR\", SJM: \"SJ\", SWE: \"SE\", CHE: \"CH\",\n SYR: \"SY\", TWN: \"TW\", TJK: \"TJ\", TZA: \"TZ\", THA: \"TH\", TLS: \"TL\", TGO: \"TG\", TKL: \"TK\",\n TON: \"TO\", TTO: \"TT\", TUN: \"TN\", TUR: \"TR\", TKM: \"TM\", TCA: \"TC\", TUV: \"TV\", UGA: \"UG\",\n UKR: \"UA\", ARE: \"AE\", GBR: \"GB\", USA: \"US\", UMI: \"UM\", URY: \"UY\", UZB: \"UZ\", VUT: \"VU\",\n VEN: \"VE\", VNM: \"VN\", VGB: \"VG\", VIR: \"VI\", WLF: \"WF\", ESH: \"EH\", YEM: \"YE\", ZMB: \"ZM\",\n ZWE: \"ZW\", XKX: \"XK\",\n};\n\nconst alpha2ToAlpha3 = new Map<string, string>();\nfor (const [a3, a2] of Object.entries(ISO_3166_1_ALPHA3_TO_ALPHA2)) {\n if (!alpha2ToAlpha3.has(a2)) {\n alpha2ToAlpha3.set(a2, a3);\n }\n}\n\nexport const ISO_3166_1_ALPHA2_TO_ALPHA3: ReadonlyMap<string, string> = alpha2ToAlpha3;\n","import { ISO_3166_1_ALPHA3_TO_ALPHA2, ISO_3166_1_ALPHA2_TO_ALPHA3 } from \"./alpha3-map.js\";\nimport { normalizeAlpha2 } from \"./alpha2.js\";\nimport { CountryCodeError } from \"./errors.js\";\nimport type { CountryCodeAlpha2, CountryCodeAlpha3 } from \"./types.js\";\n\nconst ALPHA3_FORMAT = /^[A-Z]{3}$/;\n\n/** Alpha-3 → assigned alpha-2. */\nexport function alpha3ToAlpha2(code: string): CountryCodeAlpha2 {\n const upper = code.trim().toUpperCase();\n if (!ALPHA3_FORMAT.test(upper)) {\n throw new CountryCodeError(\n `Invalid alpha-3 country code \"${code}\" — expected three letters`,\n );\n }\n const a2 = ISO_3166_1_ALPHA3_TO_ALPHA2[upper];\n if (!a2) {\n throw new CountryCodeError(\n `Alpha-3 code \"${upper}\" is not an assigned ISO 3166-1 alpha-3 code`,\n );\n }\n return normalizeAlpha2(a2);\n}\n\n/** Alpha-2 → preferred alpha-3 when known. */\nexport function alpha2ToAlpha3(code: string): CountryCodeAlpha3 {\n const a2 = normalizeAlpha2(code);\n const a3 = ISO_3166_1_ALPHA2_TO_ALPHA3.get(a2);\n if (!a3) {\n throw new CountryCodeError(`No alpha-3 mapping registered for \"${a2}\"`);\n }\n return a3 as CountryCodeAlpha3;\n}\n","import { normalizeAlpha2 } from \"./alpha2.js\";\nimport { CountryCodeError } from \"./errors.js\";\nimport type { SubdivisionCode } from \"./types.js\";\n\nconst SUBDIVISION = /^[A-Z]{2}-[\\dA-Z]{1,8}$/;\n\n/**\n * Normalize ISO 3166-2 subdivision id (`US-CA`, `ID-JK`).\n * Validates format and matching country prefix — not full subdivision registry membership.\n */\nexport function normalizeSubdivisionCode(\n countryAlpha2: string,\n subdivision: string,\n): SubdivisionCode {\n const country = normalizeAlpha2(countryAlpha2);\n let raw = subdivision.trim().toUpperCase();\n if (!raw.includes(\"-\")) {\n raw = `${country}-${raw}`;\n }\n if (!SUBDIVISION.test(raw)) {\n throw new CountryCodeError(\n `Invalid subdivision \"${subdivision}\" — expected ISO 3166-2 form CC-XXX`,\n );\n }\n const prefix = raw.slice(0, 2);\n if (prefix !== country) {\n throw new CountryCodeError(\n `Subdivision \"${raw}\" does not match country \"${country}\"`,\n );\n }\n return raw as SubdivisionCode;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAO,IAAM,mBAAN,cAA+B,MAAM;AAAA,EAC1C,YAAY,SAAiB;AAC3B,UAAM,OAAO;AACb,SAAK,OAAO;AAAA,EACd;AACF;;;ACJO,IAAM,0BAA0B;AAAA,EACrC;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAC1F;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAC1F;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAC1F;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAC1F;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAC1F;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAC1F;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAC1F;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAC1F;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAC1F;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAC1F;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAC1F;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAC1F;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAC1F;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAC1F;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAC1F;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AACxD;AAIO,IAAM,wBAA6C,IAAI;AAAA,EAC5D;AACF;;;ACpBA,IAAM,gBAAgB;AAGf,SAAS,iBAAiB,MAAuB;AACtD,QAAM,QAAQ,KAAK,KAAK,EAAE,YAAY;AACtC,SAAO,cAAc,KAAK,KAAK,KAAK,sBAAsB,IAAI,KAAK;AACrE;AAGO,SAAS,gBAAgB,MAAiC;AAC/D,QAAM,QAAQ,KAAK,KAAK,EAAE,YAAY;AACtC,MAAI,CAAC,cAAc,KAAK,KAAK,GAAG;AAC9B,UAAM,IAAI;AAAA,MACR,yBAAyB,IAAI;AAAA,IAC/B;AAAA,EACF;AACA,MAAI,CAAC,sBAAsB,IAAI,KAAK,GAAG;AACrC,UAAM,IAAI;AAAA,MACR,iBAAiB,KAAK;AAAA,IACxB;AAAA,EACF;AACA,SAAO;AACT;AAGO,SAAS,qBAAwC;AACtD,SAAO;AACT;AAEO,SAAS,cAAc,GAAW,GAAmB;AAC1D,SAAO,gBAAgB,CAAC,EAAE,cAAc,gBAAgB,CAAC,CAAC;AAC5D;;;AChCO,IAAM,8BAA8D;AAAA,EACzE,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAClF,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAClF,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAClF,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAClF,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAClF,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAClF,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAClF,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAClF,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAClF,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAClF,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAClF,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAClF,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAClF,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAClF,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAClF,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAClF,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAClF,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAClF,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAClF,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAClF,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAClF,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAAM,KAAK;AAAA,EAClF,KAAK;AAAA,EAAM,K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","names":["alpha2ToAlpha3","alpha2ToAlpha3"]}