{"version":3,"file":"index.mjs","names":[],"sources":["../../src/phone/countryCodeData.ts","../../src/phone/phoneUtils.ts"],"sourcesContent":["export type CountryCodeData = typeof data;\nexport type CountryName = CountryCodeData[number][0];\nexport type CountryIso = CountryCodeData[number][1];\nexport type DialingCode = CountryCodeData[number][2];\nexport type PhonePattern = CountryCodeData[number][3] | '';\n\nconst data = [\n  ['United States', 'us', '1', '(...) ...-....', 100],\n  ['United Kingdom', 'gb', '44', '.... ......', 100],\n  ['India', 'in', '91', '.....-.....', 100],\n  ['Canada', 'ca', '1', '(...) ...-....', 100],\n  ['Germany', 'de', '49', '... .......', 100],\n  ['France', 'fr', '33', '. .. .. .. ..', 100],\n  ['Russia', 'ru', '7', '... ...-..-..', 100],\n  ['Afghanistan', 'af', '93'],\n  ['Åland Islands', 'ax', '358'],\n  ['Albania', 'al', '355'],\n  ['Algeria', 'dz', '213'],\n  ['American Samoa', 'as', '1684'],\n  ['Andorra', 'ad', '376'],\n  ['Angola', 'ao', '244'],\n  ['Anguilla', 'ai', '1264'],\n  ['Antigua and Barbuda', 'ag', '1268'],\n  ['Argentina', 'ar', '54'],\n  ['Armenia', 'am', '374'],\n  ['Aruba', 'aw', '297'],\n  ['Ascension Island', 'ac', '247'],\n  ['Australia', 'au', '61', '... ... ...'],\n  ['Austria', 'at', '43'],\n  ['Azerbaijan', 'az', '994'],\n  ['Bahamas', 'bs', '1242'],\n  ['Bahrain', 'bh', '973'],\n  ['Bangladesh', 'bd', '880'],\n  ['Barbados', 'bb', '1246'],\n  ['Belarus', 'by', '375'],\n  ['Belgium', 'be', '32', '... .. .. ..'],\n  ['Belize', 'bz', '501'],\n  ['Benin', 'bj', '229'],\n  ['Bermuda', 'bm', '1441'],\n  ['Bhutan', 'bt', '975'],\n  ['Bolivia', 'bo', '591'],\n  ['Bosnia and Herzegovina', 'ba', '387'],\n  ['Botswana', 'bw', '267'],\n  ['Brazil', 'br', '55'],\n  ['British Indian Ocean Territory', 'io', '246'],\n  ['British Virgin Islands', 'vg', '1284'],\n  ['Brunei', 'bn', '673'],\n  ['Bulgaria', 'bg', '359'],\n  ['Burkina Faso', 'bf', '226'],\n  ['Burundi', 'bi', '257'],\n  ['Cambodia', 'kh', '855'],\n  ['Cameroon', 'cm', '237'],\n  ['Cape Verde', 'cv', '238'],\n  ['Caribbean Netherlands', 'bq', '599'],\n  ['Cayman Islands', 'ky', '1345'],\n  ['Central African Republic', 'cf', '236'],\n  ['Chad', 'td', '235'],\n  ['Chile', 'cl', '56'],\n  ['China', 'cn', '86', '...-....-....'],\n  ['Colombia', 'co', '57'],\n  ['Comoros', 'km', '269'],\n  ['Democratic Republic of the Congo', 'cd', '243'],\n  ['Republic of the Congo', 'cg', '242'],\n  ['Cook Islands', 'ck', '682'],\n  ['Costa Rica', 'cr', '506', '....-....'],\n  ['Côte d’Ivoire', 'ci', '225'],\n  ['Croatia', 'hr', '385'],\n  ['Cuba', 'cu', '53'],\n  ['Curaçao', 'cw', '599'],\n  ['Cyprus', 'cy', '357'],\n  ['Czech Republic', 'cz', '420'],\n  ['Denmark', 'dk', '45', '.. .. .. ..'],\n  ['Djibouti', 'dj', '253'],\n  ['Dominica', 'dm', '1767'],\n  ['Dominican Republic', 'do', '1'],\n  ['Ecuador', 'ec', '593'],\n  ['Egypt', 'eg', '20'],\n  ['El Salvador', 'sv', '503', '....-....'],\n  ['Equatorial Guinea', 'gq', '240'],\n  ['Eritrea', 'er', '291'],\n  ['Estonia', 'ee', '372'],\n  ['Ethiopia', 'et', '251'],\n  ['Falkland Islands', 'fk', '500'],\n  ['Faroe Islands', 'fo', '298'],\n  ['Fiji', 'fj', '679'],\n  ['Finland', 'fi', '358', '.. ... .. ..'],\n  ['French Guiana', 'gf', '594'],\n  ['French Polynesia', 'pf', '689'],\n  ['Gabon', 'ga', '241'],\n  ['Gambia', 'gm', '220'],\n  ['Georgia', 'ge', '995'],\n  ['Ghana', 'gh', '233'],\n  ['Gibraltar', 'gi', '350'],\n  ['Greece', 'gr', '30', '... .......'],\n  ['Greenland', 'gl', '299'],\n  ['Grenada', 'gd', '1473'],\n  ['Guadeloupe', 'gp', '590'],\n  ['Guam', 'gu', '1671'],\n  ['Guatemala', 'gt', '502', '....-....'],\n  ['Guinea', 'gn', '224'],\n  ['Guinea-Bissau', 'gw', '245'],\n  ['Guyana', 'gy', '592'],\n  ['Haiti', 'ht', '509', '....-....'],\n  ['Honduras', 'hn', '504'],\n  ['Hong Kong', 'hk', '852', '.... ....'],\n  ['Hungary', 'hu', '36'],\n  ['Iceland', 'is', '354', '... ....'],\n  ['Indonesia', 'id', '62'],\n  ['Iran', 'ir', '98'],\n  ['Iraq', 'iq', '964'],\n  ['Ireland', 'ie', '353', '.. .......'],\n  ['Israel', 'il', '972'],\n  ['Italy', 'it', '39', '... ......'],\n  ['Jamaica', 'jm', '1876'],\n  ['Japan', 'jp', '81', '... .. ....'],\n  ['Jordan', 'jo', '962'],\n  ['Kazakhstan', 'kz', '7', '... ...-..-..'],\n  ['Kenya', 'ke', '254'],\n  ['Kiribati', 'ki', '686'],\n  ['Kosovo', 'xk', '383'],\n  ['Kuwait', 'kw', '965'],\n  ['Kyrgyzstan', 'kg', '996'],\n  ['Laos', 'la', '856'],\n  ['Latvia', 'lv', '371'],\n  ['Lebanon', 'lb', '961'],\n  ['Lesotho', 'ls', '266'],\n  ['Liberia', 'lr', '231'],\n  ['Libya', 'ly', '218'],\n  ['Liechtenstein', 'li', '423'],\n  ['Lithuania', 'lt', '370'],\n  ['Luxembourg', 'lu', '352'],\n  ['Macau', 'mo', '853'],\n  ['Madagascar', 'mg', '261'],\n  ['Malawi', 'mw', '265'],\n  ['Malaysia', 'my', '60', '..-....-....'],\n  ['Maldives', 'mv', '960'],\n  ['Mali', 'ml', '223'],\n  ['Malta', 'mt', '356'],\n  ['Marshall Islands', 'mh', '692'],\n  ['Martinique', 'mq', '596'],\n  ['Mauritania', 'mr', '222'],\n  ['Mauritius', 'mu', '230'],\n  ['Mayotte', 'yt', '262'],\n  ['Mexico', 'mx', '52'],\n  ['Micronesia', 'fm', '691'],\n  ['Moldova', 'md', '373'],\n  ['Monaco', 'mc', '377'],\n  ['Mongolia', 'mn', '976'],\n  ['Montenegro', 'me', '382'],\n  ['Montserrat', 'ms', '1664'],\n  ['Morocco', 'ma', '212'],\n  ['Mozambique', 'mz', '258'],\n  ['Myanmar', 'mm', '95'],\n  ['Namibia', 'na', '264'],\n  ['Nauru', 'nr', '674'],\n  ['Nepal', 'np', '977'],\n  ['Netherlands', 'nl', '31', '.. ........'],\n  ['New Caledonia', 'nc', '687'],\n  ['New Zealand', 'nz', '64', '...-...-....'],\n  ['Nicaragua', 'ni', '505'],\n  ['Niger', 'ne', '227'],\n  ['Nigeria', 'ng', '234'],\n  ['Niue', 'nu', '683'],\n  ['Norfolk Island', 'nf', '672'],\n  ['North Korea', 'kp', '850'],\n  ['North Macedonia', 'mk', '389'],\n  ['Northern Mariana Islands', 'mp', '1670'],\n  ['Norway', 'no', '47', '... .. ...'],\n  ['Oman', 'om', '968'],\n  ['Pakistan', 'pk', '92', '...-.......'],\n  ['Palau', 'pw', '680'],\n  ['Palestine', 'ps', '970'],\n  ['Panama', 'pa', '507'],\n  ['Papua New Guinea', 'pg', '675'],\n  ['Paraguay', 'py', '595'],\n  ['Peru', 'pe', '51'],\n  ['Philippines', 'ph', '63', '... ....'],\n  ['Poland', 'pl', '48', '...-...-...'],\n  ['Portugal', 'pt', '351'],\n  ['Puerto Rico', 'pr', '1'],\n  ['Qatar', 'qa', '974'],\n  ['Réunion', 're', '262'],\n  ['Romania', 'ro', '40'],\n  ['Rwanda', 'rw', '250'],\n  ['Saint Barthélemy', 'bl', '590'],\n  ['Saint Helena', 'sh', '290'],\n  ['Saint Kitts and Nevis', 'kn', '1869'],\n  ['Saint Lucia', 'lc', '1758'],\n  ['Saint Martin', 'mf', '590'],\n  ['Saint Pierre and Miquelon', 'pm', '508'],\n  ['Saint Vincent and the Grenadines', 'vc', '1784'],\n  ['Samoa', 'ws', '685'],\n  ['San Marino', 'sm', '378'],\n  ['São Tomé and Príncipe', 'st', '239'],\n  ['Saudi Arabia', 'sa', '966'],\n  ['Senegal', 'sn', '221'],\n  ['Serbia', 'rs', '381'],\n  ['Seychelles', 'sc', '248'],\n  ['Sierra Leone', 'sl', '232'],\n  ['Singapore', 'sg', '65', '....-....'],\n  ['Sint Maarten', 'sx', '1721'],\n  ['Slovakia', 'sk', '421'],\n  ['Slovenia', 'si', '386'],\n  ['Solomon Islands', 'sb', '677'],\n  ['Somalia', 'so', '252'],\n  ['South Africa', 'za', '27'],\n  ['South Korea', 'kr', '82'],\n  ['South Sudan', 'ss', '211'],\n  ['Spain', 'es', '34', '... ... ...'],\n  ['Sri Lanka', 'lk', '94'],\n  ['Sudan', 'sd', '249'],\n  ['Suriname', 'sr', '597'],\n  ['Eswatini', 'sz', '268'],\n  ['Sweden', 'se', '46', '.. ... .. ..'],\n  ['Switzerland', 'ch', '41', '.. ... .. ..'],\n  ['Syria', 'sy', '963'],\n  ['Taiwan', 'tw', '886'],\n  ['Tajikistan', 'tj', '992'],\n  ['Tanzania', 'tz', '255'],\n  ['Thailand', 'th', '66'],\n  ['Timor-Leste', 'tl', '670'],\n  ['Togo', 'tg', '228'],\n  ['Tokelau', 'tk', '690'],\n  ['Tonga', 'to', '676'],\n  ['Trinidad and Tobago', 'tt', '1868'],\n  ['Tunisia', 'tn', '216'],\n  ['Turkey', 'tr', '90', '... ... .. ..'],\n  ['Turkmenistan', 'tm', '993'],\n  ['Turks and Caicos Islands', 'tc', '1649'],\n  ['Tuvalu', 'tv', '688'],\n  ['U.S. Virgin Islands', 'vi', '1340'],\n  ['Uganda', 'ug', '256'],\n  ['Ukraine', 'ua', '380'],\n  ['United Arab Emirates', 'ae', '971'],\n  ['Uruguay', 'uy', '598'],\n  ['Uzbekistan', 'uz', '998'],\n  ['Vanuatu', 'vu', '678'],\n  ['Vatican City', 'va', '39', '.. .... ....'],\n  ['Venezuela', 've', '58'],\n  ['Vietnam', 'vn', '84'],\n  ['Wallis and Futuna', 'wf', '681'],\n  ['Western Sahara', 'eh', '212'],\n  ['Yemen', 'ye', '967'],\n  ['Zambia', 'zm', '260'],\n  ['Zimbabwe', 'zw', '263'],\n] as const;\n\nconst UnitedStatesSubAreasSet: ReadonlySet<string> = new Set([\n  '907',\n  '205',\n  '251',\n  '256',\n  '334',\n  '479',\n  '501',\n  '870',\n  '480',\n  '520',\n  '602',\n  '623',\n  '928',\n  '209',\n  '213',\n  '310',\n  '323',\n  '408',\n  '415',\n  '510',\n  '530',\n  '559',\n  '562',\n  '619',\n  '626',\n  '650',\n  '661',\n  '707',\n  '714',\n  '760',\n  '805',\n  '818',\n  '831',\n  '858',\n  '909',\n  '916',\n  '925',\n  '949',\n  '951',\n  '303',\n  '719',\n  '970',\n  '203',\n  '860',\n  '202',\n  '302',\n  '239',\n  '305',\n  '321',\n  '352',\n  '386',\n  '407',\n  '561',\n  '727',\n  '772',\n  '813',\n  '850',\n  '863',\n  '904',\n  '941',\n  '954',\n  '229',\n  '404',\n  '478',\n  '706',\n  '770',\n  '912',\n  '808',\n  '319',\n  '515',\n  '563',\n  '641',\n  '712',\n  '208',\n  '217',\n  '309',\n  '312',\n  '618',\n  '630',\n  '708',\n  '773',\n  '815',\n  '847',\n  '219',\n  '260',\n  '317',\n  '574',\n  '765',\n  '812',\n  '316',\n  '620',\n  '785',\n  '913',\n  '270',\n  '502',\n  '606',\n  '859',\n  '225',\n  '318',\n  '337',\n  '504',\n  '985',\n  '413',\n  '508',\n  '617',\n  '781',\n  '978',\n  '301',\n  '410',\n  '207',\n  '231',\n  '248',\n  '269',\n  '313',\n  '517',\n  '586',\n  '616',\n  '734',\n  '810',\n  '906',\n  '989',\n  '218',\n  '320',\n  '507',\n  '612',\n  '651',\n  '763',\n  '952',\n  '314',\n  '417',\n  '573',\n  '636',\n  '660',\n  '816',\n  '228',\n  '601',\n  '662',\n  '406',\n  '252',\n  '336',\n  '704',\n  '828',\n  '910',\n  '919',\n  '701',\n  '308',\n  '402',\n  '603',\n  '201',\n  '609',\n  '732',\n  '856',\n  '908',\n  '973',\n  '505',\n  '575',\n  '702',\n  '775',\n  '212',\n  '315',\n  '516',\n  '518',\n  '585',\n  '607',\n  '631',\n  '716',\n  '718',\n  '845',\n  '914',\n  '216',\n  '330',\n  '419',\n  '440',\n  '513',\n  '614',\n  '740',\n  '937',\n  '405',\n  '580',\n  '918',\n  '503',\n  '541',\n  '215',\n  '412',\n  '570',\n  '610',\n  '717',\n  '724',\n  '814',\n  '401',\n  '803',\n  '843',\n  '864',\n  '605',\n  '423',\n  '615',\n  '731',\n  '865',\n  '901',\n  '931',\n  '210',\n  '214',\n  '254',\n  '281',\n  '325',\n  '361',\n  '409',\n  '432',\n  '512',\n  '713',\n  '806',\n  '817',\n  '830',\n  '903',\n  '915',\n  '936',\n  '940',\n  '956',\n  '972',\n  '979',\n  '435',\n  '801',\n  '276',\n  '434',\n  '540',\n  '703',\n  '757',\n  '804',\n  '802',\n  '206',\n  '253',\n  '360',\n  '425',\n  '509',\n  '262',\n  '414',\n  '608',\n  '715',\n  '920',\n  '304',\n  '307',\n]);\n\nconst CanadaSubAreaSet: ReadonlySet<string> = new Set([\n  '204',\n  '226',\n  '236',\n  '249',\n  '250',\n  '289',\n  '306',\n  '343',\n  '365',\n  '387',\n  '403',\n  '416',\n  '418',\n  '431',\n  '437',\n  '438',\n  '450',\n  '506',\n  '514',\n  '519',\n  '548',\n  '579',\n  '581',\n  '587',\n  '604',\n  '613',\n  '639',\n  '647',\n  '672',\n  '705',\n  '709',\n  '742',\n  '778',\n  '780',\n  '782',\n  '807',\n  '819',\n  '825',\n  '867',\n  '873',\n  '902',\n  '905',\n]);\n\nexport const SubAreaCodeSets = {\n  us: UnitedStatesSubAreasSet,\n  ca: CanadaSubAreaSet,\n};\n\nexport interface CountryEntry {\n  name: CountryName;\n  iso: CountryIso;\n  code: DialingCode;\n  pattern: PhonePattern;\n  priority: number;\n}\n\nconst createEntry = ([\n  name,\n  iso,\n  code,\n  pattern = '' as any,\n  priority = 0 as any,\n]: CountryCodeData[number]): CountryEntry => ({\n  name,\n  iso,\n  code,\n  pattern,\n  priority,\n});\n\nexport type IsoToCountryMapType = ReadonlyMap<CountryIso, CountryEntry>;\n\nexport const IsoToCountryMap: IsoToCountryMapType = data.reduce(\n  (acc, cur) => acc.set(cur[1], createEntry(cur)),\n  new Map<CountryIso, CountryEntry>(),\n);\n\nexport type CodeToCountryIsoMapType = ReadonlyMap<DialingCode, CountryEntry[]>;\n\nexport const CodeToCountriesMap: CodeToCountryIsoMapType = data.reduce((acc, cur) => {\n  const code = cur[2];\n  const country = createEntry(cur);\n  if (acc.has(code)) {\n    acc.get(code)?.push(country);\n  } else {\n    acc.set(code, [country]);\n  }\n  return acc;\n}, new Map<DialingCode, CountryEntry[]>());\n","import type { PhoneCodeChannel } from '../types';\nimport type { CountryEntry, CountryIso } from './countryCodeData';\nimport { CodeToCountriesMap, IsoToCountryMap, SubAreaCodeSets } from './countryCodeData';\n\n// offset between uppercase ascii and regional indicator symbols\nconst OFFSET = 127397;\nconst emojiCache = {} as Record<CountryIso, string>;\nexport function getFlagEmojiFromCountryIso(iso: CountryIso, fallbackIso = 'us'): string {\n  iso = iso || fallbackIso;\n  if (emojiCache[iso]) {\n    return emojiCache[iso];\n  }\n  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n  const codePoints = [...iso.toUpperCase()].map(c => c.codePointAt(0)! + OFFSET);\n  const res = String.fromCodePoint(...codePoints);\n  emojiCache[iso] = res;\n  return res;\n}\n\nexport function getCountryIsoFromFormattedNumber(formattedNumber: string, fallbackIso = 'us'): string {\n  const number = extractDigits(formattedNumber);\n  if (!number || number.length < 4) {\n    return fallbackIso;\n  }\n\n  // Try to match US first based on subarea code\n  if (number.startsWith('1') && phoneNumberBelongsTo('us', number)) {\n    return 'us';\n  }\n\n  // Try to match CA first based on subarea code\n  if (number.startsWith('1') && phoneNumberBelongsTo('ca', number)) {\n    return 'ca';\n  }\n\n  // Otherwise, use the most specific code or fallback to US\n  return getCountryFromPhoneString(number).country.iso;\n}\n\nexport function formatPhoneNumber(phoneNumber: string, pattern: string | undefined, countryCode?: string): string {\n  if (!phoneNumber || !pattern) {\n    return phoneNumber;\n  }\n\n  const digits = [...extractDigits(phoneNumber)].slice(0, maxE164CompliantLength(countryCode));\n\n  if (digits.length <= 3) {\n    return digits.join('');\n  }\n\n  let res = '';\n  for (let i = 0; digits.length > 0; i++) {\n    if (i > pattern.length - 1) {\n      res += digits.shift();\n    } else {\n      res += pattern[i] === '.' ? digits.shift() : pattern[i];\n    }\n  }\n  return res;\n}\n\nexport function extractDigits(formattedPhone: string): string {\n  return (formattedPhone || '').replace(/[^\\d]/g, '');\n}\n\nfunction phoneNumberBelongsTo(iso: 'us' | 'ca', phoneWithCode: string) {\n  if (!iso || !IsoToCountryMap.get(iso) || !phoneWithCode) {\n    return false;\n  }\n\n  const code = phoneWithCode[0];\n  const subArea = phoneWithCode.substring(1, 4);\n  return (\n    code === IsoToCountryMap.get(iso)?.code &&\n    phoneWithCode.length - 1 === maxDigitCountForPattern(IsoToCountryMap.get(iso)?.pattern || '') &&\n    SubAreaCodeSets[iso].has(subArea)\n  );\n}\n\nfunction maxDigitCountForPattern(pattern: string) {\n  return (pattern.match(/\\./g) || []).length;\n}\n\n// https://en.wikipedia.org/wiki/E.164\nconst MAX_PHONE_NUMBER_LENGTH = 15;\nfunction maxE164CompliantLength(countryCode?: string) {\n  const usCountryCode = '1';\n  countryCode = countryCode || usCountryCode;\n  const codeWithPrefix = countryCode.includes('+') ? countryCode : '+' + countryCode;\n  return MAX_PHONE_NUMBER_LENGTH - codeWithPrefix.length;\n}\n\nexport function parsePhoneString(str: string) {\n  const digits = extractDigits(str);\n  const iso = getCountryIsoFromFormattedNumber(digits) as CountryIso;\n  const pattern = IsoToCountryMap.get(iso)?.pattern || '';\n  const code = IsoToCountryMap.get(iso)?.code || '';\n  const number = digits.slice(code.length);\n  const formattedNumberWithCode = `+${code} ${formatPhoneNumber(number, pattern, code)}`;\n  return { iso, pattern, code, number, formattedNumberWithCode };\n}\n\nexport function stringToFormattedPhoneString(str: string): string {\n  const parsed = parsePhoneString(str);\n  return `+${parsed.code} ${formatPhoneNumber(parsed.number, parsed.pattern, parsed.code)}`;\n}\n\nexport const byPriority = (a: CountryEntry, b: CountryEntry) => {\n  return b.priority - a.priority;\n};\n\nexport function getCountryFromPhoneString(phone: string): { number: string; country: CountryEntry } {\n  const phoneWithCode = extractDigits(phone);\n  const matchingCountries: CountryEntry[] = [];\n\n  // Max country code length is 4. Try to match more specific codes first\n  for (const i of [4, 3, 2, 1]) {\n    const potentialCode = phoneWithCode.substring(0, i);\n    const countries = CodeToCountriesMap.get(potentialCode as any) || [];\n\n    if (countries.length) {\n      matchingCountries.push(...countries);\n    }\n  }\n\n  const fallbackCountry = IsoToCountryMap.get('us');\n  const country: CountryEntry = matchingCountries.sort(byPriority)[0] || fallbackCountry;\n  const number = phoneWithCode.slice(country?.code.length || 0);\n\n  return { number, country };\n}\n\nexport function getPreferredPhoneCodeChannelByCountry(\n  phoneNumber: string,\n  preferredChannels: Record<string, PhoneCodeChannel>,\n): PhoneCodeChannel | null {\n  if (!preferredChannels) {\n    return null;\n  }\n  const { country } = getCountryFromPhoneString(phoneNumber);\n  return preferredChannels[country.iso.toUpperCase()] || null;\n}\n"],"mappings":"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EAAC;EAAgB;EAAM;CAAK;CAC5B;EAAC;EAA4B;EAAM;CAAM;CACzC;EAAC;EAAU;EAAM;CAAK;CACtB;EAAC;EAAuB;EAAM;CAAM;CACpC;EAAC;EAAU;EAAM;CAAK;CACtB;EAAC;EAAW;EAAM;CAAK;CACvB;EAAC;EAAwB;EAAM;CAAK;CACpC;EAAC;EAAW;EAAM;CAAK;CACvB;EAAC;EAAc;EAAM;CAAK;CAC1B;EAAC;EAAW;EAAM;CAAK;CACvB;EAAC;EAAgB;EAAM;EAAM;CAAc;CAC3C;EAAC;EAAa;EAAM;CAAI;CACxB;EAAC;EAAW;EAAM;CAAI;CACtB;EAAC;EAAqB;EAAM;CAAK;CACjC;EAAC;EAAkB;EAAM;CAAK;CAC9B;EAAC;EAAS;EAAM;CAAK;CACrB;EAAC;EAAU;EAAM;CAAK;CACtB;EAAC;EAAY;EAAM;CAAK;AAC1B;AAEA,MAAM,0BAA+C,IAAI,IAAI;CAC3D;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAED,MAAM,mBAAwC,IAAI,IAAI;CACpD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAED,MAAa,kBAAkB;CAC7B,IAAI;CACJ,IAAI;AACN;AAUA,MAAM,eAAe,CACnB,MACA,KACA,MACA,UAAU,IACV,WAAW,QACiC;CAC5C;CACA;CACA;CACA;CACA;AACF;AAIA,MAAa,kBAAuC,KAAK,QACtD,KAAK,QAAQ,IAAI,IAAI,IAAI,IAAI,YAAY,GAAG,CAAC,mBAC9C,IAAI,IAA8B,CACpC;AAIA,MAAa,qBAA8C,KAAK,QAAQ,KAAK,QAAQ;CACnF,MAAM,OAAO,IAAI;CACjB,MAAM,UAAU,YAAY,GAAG;CAC/B,IAAI,IAAI,IAAI,IAAI,GACd,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,OAAO;MAE3B,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC;CAEzB,OAAO;AACT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"}