{"mappings":";AAGA,IAAOA,EAAQ,CAAC,QAAU,EAAE,sBAAwB,CAAC,EAAI,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,EAAE,EAAI,CAAC,KAAK,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,KAAK,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,KAAK,KAAK,KAAK,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,KAAK,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,KAAK,KAAK,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,KAAK,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,KAAK,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,KAAK,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,KAAK,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,KAAK,KAAK,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,KAAK,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,I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","names":["metadata_min_json_default","withMetadataArgument","func","_arguments","args","metadata_min_json_default","semver_compare_default","a","b","split","pa","pb","i","na","Number","nb","isNaN","objectConstructor","constructor","isObject","object","CALLING_CODE_REG_EXP","isCallingCode","string","test","V3","V4","DEFAULT_EXT_PREFIX","Metadata","metadata","_classCallCheck","validateMetadata","setVersion","call","_createClass","key","value","Object","keys","countries","filter","_","countryCode","v1","v2","v3","nonGeographic","nonGeographical","country","getCountryMetadata","undefined","callingCode","getCountryCodesForCallingCode","countryCodes","countryCallingCodes","length","selectNumberingPlan","argument","legacyArgumentCallingCode","isCallingCode","countryMetadata","Error","concat","numberingPlan","NumberingPlan","hasCallingCode","getNumberingPlanMetadata","getCountryCodeForCallingCode","IDDPrefix","defaultIDDPrefix","nationalNumberPattern","possibleLengths","formats","nationalPrefixForParsing","nationalPrefixTransformRule","leadingDigits","hasTypes","type","ext","country_phone_code_to_countries","country_calling_codes","NumberingPlan","metadata","globalMetadataObject","_classCallCheck","setVersion","call","_createClass","key","value","getNumberingPlanMetadata","callingCode","_getDefaultCountryMetadataForThisCallingCode","v1","v2","_this","formats","_getFormats","map","_","Format","_getNationalPrefixFormattingRule","_nationalPrefixForParsing","nationalPrefix","_getNationalPrefixIsOptionalWhenFormatting","types","length","type","hasTypes","getType","Type","DEFAULT_EXT_PREFIX","format","_format","nationalPrefixFormattingRule","nationalPrefixIsOptionalWhenFormattingInNationalFormat","usesNationalPrefix","FIRST_GROUP_ONLY_PREFIX_PATTERN","test","possibleLengths","validateMetadata","Error","isObject","countries","concat","Object","keys","join","typeOf","_typeof","getExtPrefix","country","metadataJson","Metadata","hasCountry","selectNumberingPlan","ext","getCountryCallingCode","countryCallingCode","isSupportedCountry","hasOwnProperty","version","v3","v4","compare","V3","V4","mergeArrays","a","b","merged","slice","_iterator","_createForOfIteratorHelperLoose","_step","done","element","value","indexOf","push","sort","checkNumberLength","nationalNumber","country","metadata","checkNumberLengthForType","undefined","type","Metadata","selectNumberingPlan","type_info","possible_lengths","possibleLengths","mobile_type","mergeArrays","actual_length","length","minimum_length","indexOf","isPossiblePhoneNumber","input","options","metadataJson","undefined","metadata","Metadata","v2","countryCallingCode","Error","selectNumberingPlan","country","phone","hasCountry","concat","possibleLengths","isPossibleNumber","nationalNumber","isNonGeographicCallingCode","checkNumberLength","matchesEntirely","text","regularExpressionText","RegExp","test","NON_FIXED_LINE_PHONE_TYPES","getNumberType","input","options","metadataJson","country","countryCallingCode","metadata","Metadata","selectNumberingPlan","nationalNumber","v2","phone","matchesEntirely","nationalNumberPattern","isNumberTypeEqualTo","type","pattern","_iterator","_createForOfIteratorHelperLoose","_step","done","value","typeDefinition","possibleLengths","indexOf","length","isValidNumber","input","options","metadataJson","metadata","Metadata","selectNumberingPlan","country","countryCallingCode","hasTypes","getNumberType","undefined","nationalNumber","v2","phone","matchesEntirely","nationalNumberPattern","COUNTRY_CODE_REG_EXP","isCountryCode","string","test","USE_NON_GEOGRAPHIC_COUNTRY_CODE","getCountryAndCallingCodeFromOneOfThem","countryOrCallingCode","metadataJson","country","callingCode","metadata","Metadata","isCountryCode","selectNumberingPlan","countryCallingCode","isNonGeographicCallingCode","getPossibleCountriesForNumber","callingCode","nationalNumber","metadata","_metadata","Metadata","possibleCountries","getCountryCodesForCallingCode","filter","country","couldNationalNumberBelongToCountry","metadataJson","selectNumberingPlan","numberingPlan","possibleLengths","indexOf","length","MIN_LENGTH_FOR_NSN","MAX_LENGTH_FOR_NSN","MAX_LENGTH_COUNTRY_CODE","VALID_DIGITS","DASHES","SLASHES","DOTS","WHITESPACE","BRACKETS","TILDES","VALID_PUNCTUATION","concat","PLUS_CHARS","CAPTURING_DIGIT_PATTERN","RegExp","VALID_DIGITS","stripIddPrefix","number","country","callingCode","metadataJson","metadata","Metadata","selectNumberingPlan","IDDPrefixPattern","IDDPrefix","search","slice","match","length","matchedGroups","extractNationalNumberFromPossiblyIncompleteNumber","number","metadata","numberingPlan","nationalPrefixForParsing","prefixPattern","RegExp","prefixMatch","exec","nationalNumber","carrierCode","capturedGroupsCount","length","hasCapturedGroups","nationalPrefixTransformRule","replace","prefixBeforeNationalNumber","slice","nationalPrefix","possiblePositionOfTheFirstCapturedGroup","indexOf","possibleNationalPrefix","getCountryByNationalNumber","nationalNumber","countries","metadataJson","metadata","Metadata","_iterator","_createForOfIteratorHelperLoose","_step","done","country","value","selectNumberingPlan","leadingDigits","search","getNumberType","phone","undefined","USE_NON_GEOGRAPHIC_COUNTRY_CODE","getCountryByCallingCode","callingCode","_ref","nationalNumber","metadata","isNonGeographicCallingCode","possibleCountries","getCountryCodesForCallingCode","length","getCountryByNationalNumber","extractNationalNumber","number","country","metadata","_extractNationalNumbe","extractNationalNumberFromPossiblyIncompleteNumber","carrierCode","nationalNumber","shouldHaveExtractedNationalPrefix","numberingPlan","possibleLengths","getCountryByCallingCode","callingCode","isPossibleIncompleteNationalNumber","nationalNumberBefore","nationalNumberAfter","matchesEntirely","nationalNumberPattern","checkNumberLength","extractCountryCallingCodeFromInternationalNumberWithoutPlusSign","number","country","defaultCountry","defaultCallingCode","metadataJson","countryCallingCode","getCountryCallingCode","indexOf","metadata","Metadata","selectNumberingPlan","possibleShorterNumber","slice","length","_extractNationalNumbe","extractNationalNumber","undefined","possibleShorterNationalNumber","nationalNumber","_extractNationalNumbe2","matchesEntirely","nationalNumberPattern","checkNumberLength","extractCountryCallingCode","number","country","defaultCountry","defaultCallingCode","metadataJson","isNumberWithIddPrefix","numberWithoutIDD","stripIddPrefix","_extractCountryCallin","extractCountryCallingCodeFromInternationalNumberWithoutPlusSign","countryCallingCode","shorterNumber","countryCallingCodeSource","metadata","Metadata","i","MAX_LENGTH_COUNTRY_CODE","length","slice","hasCallingCode","selectNumberingPlan","applyInternationalSeparatorStyle","formattedNumber","replace","RegExp","concat","VALID_PUNCTUATION","trim","FIRST_GROUP_PATTERN","formatNationalNumberUsingFormat","number","format","_ref","useInternationalFormat","withNationalPrefix","carrierCode","metadata","formattedNumber","replace","RegExp","pattern","internationalFormat","nationalPrefixFormattingRule","applyInternationalSeparatorStyle","SINGLE_IDD_PREFIX_REG_EXP","getIddPrefix","country","callingCode","metadata","countryMetadata","Metadata","selectNumberingPlan","defaultIDDPrefix","test","IDDPrefix","RFC3966_EXTN_PREFIX","getExtensionDigitsPattern","maxLength","concat","VALID_DIGITS","createExtensionPattern","purpose","extLimitAfterExplicitLabel","extLimitAfterLikelyLabel","extLimitAfterAmbiguousChar","extLimitWhenNotSure","possibleSeparatorsBetweenNumberAndExtLabel","possibleCharsAfterExtLabel","optionalExtnSuffix","explicitExtLabels","ambiguousExtLabels","ambiguousSeparator","possibleSeparatorsNumberExtLabelNoComma","autoDiallingAndExtLabelsFound","rfcExtn","explicitExtn","ambiguousExtn","americanStyleExtnWithSuffix","autoDiallingExtn","onlyCommasExtn","MIN_LENGTH_PHONE_NUMBER_PATTERN","VALID_DIGITS","MIN_LENGTH_FOR_NSN","VALID_PHONE_NUMBER","PLUS_CHARS","VALID_PUNCTUATION","VALID_PHONE_NUMBER_START_REG_EXP","RegExp","VALID_PHONE_NUMBER_WITH_EXTENSION","createExtensionPattern","VALID_PHONE_NUMBER_PATTERN","isViablePhoneNumber","number","length","test","isViablePhoneNumberStart","parseRFC3966","text","number","ext","replace","_iterator","_createForOfIteratorHelperLoose","split","_step","done","part","value","_part$split","_part$split2","_slicedToArray","name","isViablePhoneNumber","result","formatRFC3966","_ref","Error","concat","DEFAULT_OPTIONS","formatExtension","formattedNumber","extension","metadata","concat","ext","formatNumber","input","format","options","metadataJson","merge","Metadata","country","hasCountry","Error","selectNumberingPlan","countryCallingCode","phone","nationalNumber","v2","number","formatNationalNumber","carrierCode","addExtension","formatRFC3966","fromCountry","formatIDD","formatAs","chooseFormatForNumber","formats","formatNationalNumberUsingFormat","useInternationalFormat","withNationalPrefix","nationalPrefixIsOptionalWhenFormattingInNationalFormat","nationalPrefix","availableFormats","pickFirstMatchingElement","leadingDigitsPatterns","length","lastLeadingDigitsPattern","search","matchesEntirely","pattern","fromCountryCallingCode","getCountryCallingCode","iddPrefix","getIddPrefix","undefined","i","_len","arguments","objects","Array","_key","key","elements","testFunction","PhoneNumber","countryOrCountryCallingCode","nationalNumber","metadata","_classCallCheck","TypeError","isObject","countries","e164Number","E164_NUMBER_REGEXP","test","Error","_extractCountryCallin","extractCountryCallingCode","undefined","countryCallingCode","number","validateMetadata","_getCountryAndCalling","getCountryAndCallingCodeFromOneOfThem","country","callingCode","getMetadata","_createClass","key","value","ext","getPossibleCountriesForNumber","isPossibleNumber","v2","isValidNumber","Metadata","isNonGeographicCallingCode","phoneNumber","getNumberType","format","options","formatNumber","_objectSpread","E164_NUMBER_REGEXP","ParseError","_Error","code","_this","_classCallCheck","_callSuper","Object","setPrototypeOf","prototype","name","constructor","_inherits","_createClass","_wrapNativeSuper","Error","EXTN_PATTERN","RegExp","createExtensionPattern","extractExtension","number","start","search","numberWithoutExtension","slice","matches","match","i","length","ext","DIGITS","parseDigit","character","parseDigits","string","result","_iterator","_createForOfIteratorHelperLoose","split","_step","done","value","digit","parseIncompletePhoneNumber","string","result","_iterator","_createForOfIteratorHelperLoose","split","_step","done","character","value","parsePhoneNumberCharacter","prevParsedCharacters","eventListener","parseDigit","PLUS_SIGN","RFC3966_VISUAL_SEPARATOR_","RFC3966_PHONE_DIGIT_","VALID_DIGITS","RFC3966_GLOBAL_NUMBER_DIGITS_","RFC3966_GLOBAL_NUMBER_DIGITS_PATTERN_","RegExp","ALPHANUM_","RFC3966_DOMAINLABEL_","VALID_ALPHA_","RFC3966_TOPLABEL_","RFC3966_DOMAINNAME_","RFC3966_DOMAINNAME_PATTERN_","RFC3966_PREFIX_","RFC3966_PHONE_CONTEXT_","RFC3966_ISDN_SUBADDRESS_","extractPhoneContext","numberToExtractFrom","indexOfPhoneContext","indexOf","phoneContextStart","length","phoneContextEnd","substring","isPhoneContextValid","phoneContext","test","extractFormattedPhoneNumberFromPossibleRfc3966NumberUri","numberToParse","_ref","extractFormattedPhoneNumber","phoneContext","extractPhoneContext","isPhoneContextValid","ParseError","phoneNumberString","charAt","PLUS_SIGN","indexOfRfc3966Prefix","indexOf","RFC3966_PREFIX_","indexOfNationalNumber","length","indexOfPhoneContext","RFC3966_PHONE_CONTEXT_","substring","indexOfIsdn","RFC3966_ISDN_SUBADDRESS_","MAX_INPUT_STRING_LENGTH","PHONE_NUMBER_START_PATTERN","RegExp","PLUS_CHARS","VALID_DIGITS","AFTER_PHONE_NUMBER_END_PATTERN","USE_NON_GEOGRAPHIC_COUNTRY_CODE","parse","text","options","metadataJson","metadata","Metadata","defaultCountry","hasCountry","v2","ParseError","Error","concat","_parseInput","parseInput","extract","formattedPhoneNumber","number","ext","error","_parsePhoneNumber","parsePhoneNumber","defaultCallingCode","country","nationalNumber","countryCallingCode","countryCallingCodeSource","carrierCode","hasSelectedNumberingPlan","length","MIN_LENGTH_FOR_NSN","MAX_LENGTH_FOR_NSN","phoneNumber","PhoneNumber","__countryCallingCodeSource","valid","extended","matchesEntirely","nationalNumberPattern","possible","possibleLengths","isPossibleNumber","phone","result","extractFormattedPhoneNumber","throwOnError","startsAt","search","slice","replace","extractFormattedPhoneNumberFromPossibleRfc3966NumberUri","isViablePhoneNumber","isViablePhoneNumberStart","withExtensionStripped","extractExtension","_extractCountryCallin","extractCountryCallingCode","parseIncompletePhoneNumber","undefined","selectNumberingPlan","numberingPlan","callingCode","isNonGeographicCallingCode","_extractNationalNumbe","extractNationalNumber","exactCountry","getCountryByCallingCode","parsePhoneNumberWithError","text","options","metadata","parse","_objectSpread","v2","normalizeArguments","args","_Array$prototype$slic","Array","prototype","slice","call","_Array$prototype$slic2","_slicedToArray","arg_1","arg_2","arg_3","arg_4","text","options","metadata","TypeError","undefined","_objectSpread","defaultCountry","isObject","Error","concat","parsePhoneNumberWithError","_normalizeArguments","normalizeArguments","arguments","text","options","metadata","parsePhoneNumberWithError_","parsePhoneNumber","text","options","metadata","defaultCountry","isSupportedCountry","_objectSpread","undefined","parsePhoneNumberWithError","error","ParseError","parsePhoneNumber","_normalizeArguments","normalizeArguments","arguments","text","options","metadata","parsePhoneNumber_","isValidPhoneNumber","_normalizeArguments","normalizeArguments","arguments","text","options","metadata","_objectSpread","extract","phoneNumber","parsePhoneNumber","isValid","isPossiblePhoneNumber","_normalizeArguments","normalizeArguments","arguments","text","options","metadata","_objectSpread","extract","phoneNumber","parsePhoneNumber","isPossible","validatePhoneNumberLength","_normalizeArguments","normalizeArguments","arguments","text","options","metadata","_objectSpread","extract","phoneNumber","parsePhoneNumberWithError","metadataInstance","Metadata","selectNumberingPlan","country","countryCallingCode","result","checkNumberLength","nationalNumber","undefined","error","ParseError","message","Node","_createClass","key","value","next","arguments","length","undefined","prev","_classCallCheck","LRUCache","limit","size","head","tail","cache","ensureLimit","node","remove","put","console","log","concat","RegExpCache","size","_classCallCheck","cache","LRUCache","_createClass","key","value","pattern","regExp","get","RegExp","put","limit","lower","upper","TypeError","concat","trimAfterFirstMatch","regexp","string","index","search","slice","startsWith","substring","indexOf","endsWith","length","_pZ","pZ","concat","PZ","_pN","_pNd","pNd","_pL","pL","pL_regexp","RegExp","_pSc","pSc","pSc_regexp","_pMn","pMn","pMn_regexp","_InBasic_Latin","_InLatin_1_Supplement","_InLatin_Extended_A","_InLatin_Extended_Additional","_InLatin_Extended_B","_InCombining_Diacritical_Marks","latinLetterRegexp","isLatinLetter","letter","test","isInvalidPunctuationSymbol","character","matchPhoneNumberStringAgainstPhoneNumber","phoneNumberString","phoneNumber","metadata","phoneNumberStringContainsCallingCode","parsedPhoneNumber","parsePhoneNumber","defaultCallingCode","countryCallingCode","ext","number","nationalNumber","indexOf","Leniency_default","POSSIBLE","phoneNumber","_ref","candidate","metadata","VALID","_ref2","defaultCountry","isValid","containsOnlyValidXChars","STRICT_GROUPING","_ref3","regExpCache","containsMoreThanOneSlashInNationalNumber","isNationalPrefixPresentIfRequired","checkNumberGroupingIsValid","allNumberGroupsRemainGrouped","EXACT_GROUPING","_ref4","allNumberGroupsAreExactlyPresent","index","length","charAtIndex","charAt","charAtNextIndex","matchPhoneNumberStringAgainstPhoneNumber","substring","ext","parseDigits","_ref5","_metadata","__countryCallingCodeSource","Metadata","selectNumberingPlan","countryCallingCode","phoneNumberRegion","country","getCountryByCallingCode","nationalNumber","format","chooseFormatForNumber","numberingPlan","formats","nationalPrefixFormattingRule","nationalPrefixIsOptionalWhenFormattingInNationalFormat","usesNationalPrefix","Boolean","nationalPrefix","firstSlashInBodyIndex","indexOf","secondSlashInBodyIndex","candidateHasCountryCode","slice","number","checkGroups","Error","normalizedCandidate","formattedNumberGroups","alternateFormats","nationalSignificantNumber","_iterator","_step","done","alternateFormat","value","leadingDigitsPatterns","leadingDigitsRegExp","getPatternForRegExp","test","getNationalNumberGroups","formattingPattern","util","formatNsnUsingPattern","split","rfc3966Format","endIndex","startIndex","candidateGroups","candidateNumberGroupIndex","formattedNumberGroupIndex","fromIndex","getCountryCodeSource","CountryCodeSource","FROM_DEFAULT_COUNTRY","countryCode","i","region","getRegionCodeForCountryCode","getCountryCode","getNddPrefixForRegion","Character","isDigit","getNationalSignificantNumber","startsWith","SECOND_NUMBER_START_PATTERN","parsePreCandidate","candidate","trimAfterFirstMatch","SLASH_SEPARATED_DATES","TIME_STAMPS","TIME_STAMPS_SUFFIX_LEADING","isValidPreCandidate","candidate","offset","text","test","followingText","slice","length","OPENING_PARENS","CLOSING_PARENS","NON_PARENS","concat","LEAD_CLASS","PLUS_CHARS","LEAD_CLASS_LEADING","RegExp","BRACKET_PAIR_LIMIT","limit","MATCHING_BRACKETS_ENTIRE","PUB_PAGES","isValidCandidate","candidate","offset","text","leniency","test","previousChar","isInvalidPunctuationSymbol","isLatinLetter","lastCharIndex","length","nextChar","USE_NON_GEOGRAPHIC_COUNTRY_CODE","EXTN_PATTERNS_FOR_MATCHING","createExtensionPattern","INNER_MATCHES","concat","pZ","PZ","leadLimit","limit","punctuationLimit","digitBlockLimit","MAX_LENGTH_FOR_NSN","MAX_LENGTH_COUNTRY_CODE","blockLimit","punctuation","VALID_PUNCTUATION","digitSequence","pNd","PATTERN","LEAD_CLASS","UNWANTED_END_CHAR_PATTERN","RegExp","_pN","_pL","MAX_SAFE_INTEGER","Number","Math","pow","PhoneNumberMatcher","text","arguments","length","undefined","options","metadata","_classCallCheck","v2","defaultCallingCode","defaultCountry","isSupportedCountry","leniency","extended","maxTries","Leniency","TypeError","map","pattern","state","searchIndex","regExpCache","RegExpCache","_createClass","key","value","index","lastIndex","matches","exec","candidate","offset","parsePreCandidate","isValidPreCandidate","match","parseAndVerify","extractInnerMatch","startsAt","endsAt","number","phoneNumber","result","phone","nationalNumber","country","countryCallingCode","ext","substring","_iterator","_createForOfIteratorHelperLoose","_step","done","innerMatchRegExp","isFirstMatch","candidateMatch","trimAfterFirstMatch","slice","candidateIndexGuess","indexOf","isValidCandidate","parsePhoneNumber","isPossible","lastMatch","find","hasNext","Error","findNumbers","_normalizeArguments","normalizeArguments","arguments","text","options","metadata","matcher","PhoneNumberMatcher","results","hasNext","push","next","searchNumbers","_normalizeArguments","normalizeArguments","arguments","text","options","metadata","matcher","PhoneNumberMatcher","_defineProperty","Symbol","iterator","next","hasNext","done","value","findPhoneNumbersInText","_normalizeArguments","normalizeArguments","arguments","text","options","metadata","matcher","PhoneNumberMatcher","_objectSpread","v2","results","hasNext","push","next","searchPhoneNumbersInText","_normalizeArguments","normalizeArguments","arguments","text","options","metadata","matcher","PhoneNumberMatcher","_objectSpread","v2","_defineProperty","Symbol","iterator","next","hasNext","done","value","AsYouTypeState","_ref","onCountryChange","onCallingCodeChange","_classCallCheck","_createClass","key","value","_ref2","country","callingCode","international","missingPlus","IDDPrefix","undefined","digits","resetNationalSignificantNumber","initCountryAndCallingCode","nationalSignificantNumber","getNationalDigits","nationalSignificantNumberIsModified","nationalPrefix","carrierCode","prefixBeforeNationalSignificantNumberThatIsNotNationalPrefix","properties","_i","_Object$keys","Object","keys","length","setCountry","setCallingCode","nextDigits","slice","DIGIT_PLACEHOLDER","DIGIT_PLACEHOLDER_MATCHER","RegExp","repeat","string","times","result","cutAndStripNonPairedParens","cutBeforeIndex","stripNonPairedParens","slice","stripNonPairedParens","string","dangling_braces","i","length","push","pop","start","cleared_string","_i","_dangling_braces","index","slice","populateTemplateWithDigits","template","position","digits","_iterator2","_createForOfIteratorHelperLoose","split","_step2","done","digit","value","search","DIGIT_PLACEHOLDER_MATCHER","replace","formatCompleteNumber","state","format","_ref","metadata","shouldTryNationalPrefixFormattingRule","getSeparatorAfterNationalPrefix","matcher","RegExp","concat","pattern","test","nationalSignificantNumber","formatNationalNumberWithAndWithoutNationalPrefixFormattingRule","canFormatCompleteNumber","checkNumberLength","undefined","_ref2","international","nationalPrefix","carrierCode","formattedNumber","formatNationalNumber","useNationalPrefixFormattingRule","_ref3","formattedNationalNumber","formatNationalNumberUsingFormat","useInternationalFormat","withNationalPrefix","prefixBeforeNationalSignificantNumberThatIsNotNationalPrefix","isValidFormattedNationalNumber","parseDigits","getNationalDigits","PatternParser","_classCallCheck","_createClass","key","value","pattern","context","or","instructions","parsePattern","length","Error","_this$context$","branches","op","args","concat","expandSingleElementArray","push","pop","match","OPERATOR","ILLEGAL_CHARACTER_REGEXP","test","getContext","split","operator","before","slice","index","rightPart","startContext","_this$getContext","endContext","oneOfSet","parseOneOfSet","parseOneOfSet","pattern","values","i","length","Error","concat","prevValue","charCodeAt","nextValue","value","push","String","fromCharCode","ILLEGAL_CHARACTER_REGEXP","OPERATOR","RegExp","expandSingleElementArray","array","PatternMatcher","pattern","_classCallCheck","matchTree","PatternParser","parse","_createClass","key","value","string","_ref","arguments","length","undefined","allowOverflow","Error","result","match","split","matchedChars","overflow","match","characters","tree","last","characterString","join","indexOf","length","matchedChars","partialMatch","overflow","slice","Array","isArray","restCharacters","i","subtree","result","Error","concat","JSON","stringify","op","_iterator","_createForOfIteratorHelperLoose","args","_step","done","branch","value","_iterator2","_step2","char","DUMMY_DIGIT","LONGEST_NATIONAL_PHONE_NUMBER_LENGTH","LONGEST_DUMMY_PHONE_NUMBER","repeat","NATIONAL_PREFIX_SEPARATORS_PATTERN","SUPPORT_LEGACY_FORMATTING_PATTERNS","CREATE_CHARACTER_CLASS_PATTERN","CREATE_STANDALONE_DIGIT_PATTERN","NON_ALTERING_FORMAT_REG_EXP","RegExp","VALID_PUNCTUATION","MIN_LEADING_DIGITS_LENGTH","AsYouTypeFormatter","_ref","state","metadata","_classCallCheck","resetFormat","_createClass","key","value","chosenFormat","undefined","template","nationalNumberTemplate","populatedNationalNumberTemplate","populatedNationalNumberTemplatePosition","numberingPlan","isNANP","callingCode","matchingFormats","formats","nationalSignificantNumber","narrowDownMatchingFormats","nextDigits","_this","canFormatCompleteNumber","_iterator","_createForOfIteratorHelperLoose","_step","done","format","formattedCompleteNumber","formatCompleteNumber","shouldTryNationalPrefixFormattingRule","international","nationalPrefix","getSeparatorAfterNationalPrefix","setNationalNumberTemplate","replace","DIGIT_PLACEHOLDER","lastIndexOf","formatNationalNumberWithNextDigits","previouslyChosenFormat","newlyChosenFormat","chooseFormat","formatNextNationalNumberDigits","getNationalDigits","_ref2","_this2","leadingDigits","leadingDigitsPatternIndex","length","filter","formatSuits","formatMatches","indexOf","usesNationalPrefix","nationalPrefixIsOptionalWhenFormattingInNationalFormat","nationalPrefixIsMandatoryWhenFormattingInNationalFormat","leadingDigitsPatternsCount","leadingDigitsPatterns","Math","min","leadingDigitsPattern","PatternMatcher","match","allowOverflow","error","console","concat","test","internationalFormat","_this3","_loop","_step2","getFormatFormat","createTemplateForFormat","_","_ret","_iterator2","slice","pattern","getTemplateForFormat","nationalPrefixFormattingRule","_ref3","options","IDDPrefix","missingPlus","spacing","index","i","internationalPrefix","getInternationalPrefixBeforeCountryCallingCode","getDigitsWithoutInternationalPrefix","cutAndStripNonPairedParens","_ref4","prefixBeforeNationalSignificantNumberThatIsNotNationalPrefix","digits","strictPattern","nationalNumberDummyDigits","numberFormat","nationalPrefixIncludedInTemplate","numberFormatWithNationalPrefix","FIRST_GROUP_PATTERN","parseDigits","applyInternationalSeparatorStyle","result","populateTemplateWithDigits","_ref5","VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART","VALID_PUNCTUATION","VALID_DIGITS","VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN","RegExp","VALID_FORMATTED_PHONE_NUMBER_PART","PLUS_CHARS","AFTER_PHONE_NUMBER_DIGITS_END_PATTERN","COMPLEX_NATIONAL_PREFIX","AsYouTypeParser","_ref","defaultCountry","defaultCallingCode","metadata","onNationalSignificantNumberChange","_classCallCheck","_createClass","key","value","text","state","_extractFormattedDigi","extractFormattedDigitsAndPlus","_extractFormattedDigi2","_slicedToArray","formattedDigits","hasPlus","digits","parseDigits","justLeadingPlus","startInternationalNumber","undefined","inputDigits","nextDigits","hasReceivedThreeLeadingDigits","length","appendDigits","extractIddPrefix","isWaitingForCountryCallingCode","extractCountryCallingCode","appendNationalSignificantNumberDigits","international","hasExtractedNationalSignificantNumber","extractNationalSignificantNumber","getNationalDigits","stateUpdate","update","_ref2","callingCode","_extractCountryCallin","getDigitsWithoutInternationalPrefix","country","countryCallingCode","number","setCallingCode","nationalSignificantNumber","numberingPlan","hasSelectedNumberingPlan","nationalPrefixForParsing","_nationalPrefixForParsing","couldPossiblyExtractAnotherNationalSignificantNumber","test","nationalDigits","setState","_extractNationalNumbe","extractNationalNumberFromPossiblyIncompleteNumber","nationalPrefix","nationalNumber","carrierCode","onExtractedNationalNumber","prevNationalSignificantNumber","_extractNationalNumbe2","nationalSignificantNumberIsModified","prefixBeforeNationalSignificantNumberThatIsNotNationalPrefix","nationalSignificantNumberIndex","lastIndexOf","prefixBeforeNationalNumber","slice","extractAnotherNationalSignificantNumber","extractCallingCodeAndNationalSignificantNumber","fixMissingPlus","IDDPrefix","numberWithoutIDD","stripIddPrefix","_extractCountryCallin2","extractCountryCallingCodeFromInternationalNumberWithoutPlusSign","newCallingCode","missingPlus","_ref3","resetNationalSignificantNumber","extractFormattedPhoneNumber","text","startsAt","search","VALID_FORMATTED_PHONE_NUMBER_PART","slice","hasPlus","replace","AFTER_PHONE_NUMBER_DIGITS_END_PATTERN","_extractFormattedDigitsAndPlus","extractedNumber","extractFormattedDigitsAndPlus","_extractFormattedDigi3","_extractFormattedDigi4","_slicedToArray","formattedDigits","VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN","test","USE_NON_GEOGRAPHIC_COUNTRY_CODE","AsYouType","optionsOrDefaultCountry","metadata","_classCallCheck","Metadata","_this$getCountryAndCa","getCountryAndCallingCode","_this$getCountryAndCa2","_slicedToArray","defaultCountry","defaultCallingCode","reset","_createClass","key","value","isObject","hasCountry","undefined","isNonGeographicCallingCode","text","_this$parser$input","parser","input","state","digits","justLeadingPlus","formattedOutput","determineTheCountryIfNeeded","nationalSignificantNumber","formatter","narrowDownMatchingFormats","formattedNationalNumber","hasSelectedNumberingPlan","format","reExtractNationalSignificantNumber","nationalDigits","getNationalDigits","getFullNumber","getNonFormattedNumber","_this","AsYouTypeState","onCountryChange","country","onCallingCodeChange","callingCode","selectNumberingPlan","numberingPlan","AsYouTypeFormatter","AsYouTypeParser","onNationalSignificantNumberChange","international","isInternational","getCallingCode","_getCountry","isCountryCallingCodeAmbiguous","determineTheCountry","_this2","prefix","getInternationalPrefixBeforeCountryCallingCode","spacing","concat","getDigitsWithoutInternationalPrefix","_this$state","prefixBeforeNationalSignificantNumberThatIsNotNationalPrefix","nationalPrefix","number","nationalSignificantNumberIsModified","getNonFormattedNationalNumberWithPrefix","replace","DIGIT_PLACEHOLDER","countryCodes","getCountryCodesForCallingCode","length","getCountryByCallingCode","nationalNumber","setCountry","_this$state2","callingCode_","countryCallingCode","_this$state3","carrierCode","exactCountry","getExactCountryForMultiCountryCallingCode","phoneNumber","PhoneNumber","getNumber","isPossible","isValid","_this$state4","result","checkNumberLength","getTemplate","getNonFormattedTemplate","getExactCountryForMultiCountryCallingCode","callingCode","nationalSignificantNumber","metadata","ambiguousCountries","getCountryCodesForCallingCode","length","getCountryByNationalNumber","getCountries","metadata","Metadata","getExampleNumber","country","examples","metadata","PhoneNumber","formatIncompletePhoneNumber","value","optionsOrDefaultCountry","metadata","undefined","AsYouType","input","parsePhoneNumberWithError","withMetadataArgument","parsePhoneNumber","withMetadataArgument","isValidPhoneNumber","withMetadataArgument","isPossiblePhoneNumber","withMetadataArgument","validatePhoneNumberLength","withMetadataArgument","findNumbers","withMetadataArgument","searchNumbers","withMetadataArgument","findPhoneNumbersInText","withMetadataArgument","searchPhoneNumbersInText","withMetadataArgument","PhoneNumberMatcher","text","options","metadata_min_json_default","AsYouType","country","metadata_min_json_default","isSupportedCountry","withMetadataArgument","getCountries","withMetadataArgument","getCountryCallingCode","withMetadataArgument","getExtPrefix","withMetadataArgument","Metadata","metadata_min_json_default","getExampleNumber","withMetadataArgument","formatIncompletePhoneNumber","withMetadataArgument","PhoneNumber","number","metadata_min_json_default","parseNumber","_normalizeArguments","normalizeArguments","arguments","text","options","metadata","_parseNumber","parse","withMetadataArgument","parseNumber","formatNumber","_normalizeArguments","normalizeArguments","arguments","input","format","options","metadata","_formatNumber","args","arg_1","arg_2","arg_3","arg_4","arg_5","parse","defaultCountry","extended","Error","isObject","TypeError","format","withMetadataArgument","formatNumber","getNumberType","_normalizeArguments","normalizeArguments","arguments","input","options","metadata","phone","_getNumberType","args","arg_1","arg_2","arg_3","arg_4","isObject","isViablePhoneNumber","parse","undefined","defaultCountry","TypeError","getNumberType","withMetadataArgument","isPossibleNumber","_normalizeArguments","normalizeArguments","arguments","input","options","metadata","phone","v2","_isPossibleNumber","isPossibleNumber","withMetadataArgument","isValidNumber","_normalizeArguments","normalizeArguments","arguments","input","options","metadata","phone","_isValidNumber","isValidNumber","withMetadataArgument","isValidNumberForRegion","input","country","options","metadata","isValidNumber","isValidNumberForRegion","number","country","metadata","TypeError","input","isViablePhoneNumber","parseNumber","defaultCountry","_isValidNumberForRegion","undefined","isValidNumberForRegion","withMetadataArgument","WHITESPACE_IN_THE_BEGINNING_PATTERN","RegExp","WHITESPACE","PUNCTUATION_IN_THE_END_PATTERN","VALID_PUNCTUATION","PhoneNumberSearch","text","options","metadata","_classCallCheck","state","regexp","VALID_PHONE_NUMBER_WITH_EXTENSION","_createClass","key","value","matches","exec","number","startsAt","index","replace","length","parsePreCandidate","result","parseCandidate","find","isValidPreCandidate","isValidCandidate","extended","parse","phone","endsAt","last_match","hasNext","Error","EXTN_PATTERNS_FOR_PARSING","createExtensionPattern","findPhoneNumbers","text","options","metadata","undefined","search","PhoneNumberSearch","phones","hasNext","push","next","searchPhoneNumbers","iterator","done","value","iterable","Symbol","findPhoneNumbers","_normalizeArguments","normalizeArguments","arguments","text","options","metadata","_findPhoneNumbers","searchPhoneNumbers","_normalizeArguments2","_searchPhoneNumbers","findPhoneNumbers","withMetadataArgument","searchPhoneNumbers","withMetadataArgument","PhoneNumberSearch","text","options","metadata_min_json_default"],"sources":["../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/metadata.min.json.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/min/exports/withMetadataArgument.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/tools/semver-compare.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/helpers/isObject.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/helpers/isCallingCode.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/metadata.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/helpers/mergeArrays.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/helpers/checkNumberLength.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/isPossible.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/helpers/matchesEntirely.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/helpers/getNumberType.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/isValid.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/helpers/isCountryCode.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/helpers/getCountryAndCallingCodeFromOneOfThem.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/helpers/getPossibleCountriesForNumber.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/constants.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/helpers/stripIddPrefix.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/helpers/getCountryByNationalNumber.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/helpers/getCountryByCallingCode.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/helpers/extractNationalNumber.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/helpers/extractCountryCallingCode.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/helpers/applyInternationalSeparatorStyle.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/helpers/formatNationalNumberUsingFormat.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/helpers/getIddPrefix.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/helpers/extension/createExtensionPattern.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/helpers/isViablePhoneNumber.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/helpers/RFC3966.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/format.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/PhoneNumber.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/ParseError.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/helpers/extension/extractExtension.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/helpers/parseDigits.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/parseIncompletePhoneNumber.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/helpers/extractPhoneContext.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/helpers/extractFormattedPhoneNumberFromPossibleRfc3966NumberUri.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/parse.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/parsePhoneNumberWithError_.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/normalizeArguments.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/parsePhoneNumberWithError.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/parsePhoneNumber_.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/parsePhoneNumber.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/isValidPhoneNumber.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/isPossiblePhoneNumber.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/validatePhoneNumberLength.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/findNumbers/LRUCache.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/findNumbers/RegExpCache.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/findNumbers/util.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/findNumbers/utf-8.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/findNumbers/matchPhoneNumberStringAgainstPhoneNumber.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/findNumbers/Leniency.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/findNumbers/parsePreCandidate.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/findNumbers/isValidPreCandidate.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/findNumbers/isValidCandidate.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/PhoneNumberMatcher.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/legacy/findNumbers.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/legacy/searchNumbers.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/findPhoneNumbersInText.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/searchPhoneNumbersInText.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/AsYouTypeState.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/AsYouTypeFormatter.util.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/AsYouTypeFormatter.complete.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/AsYouTypeFormatter.PatternParser.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/AsYouTypeFormatter.PatternMatcher.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/AsYouTypeFormatter.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/AsYouTypeParser.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/AsYouType.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/getCountries.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/getExampleNumber.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/formatIncompletePhoneNumber.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/min/exports/parsePhoneNumberWithError.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/min/exports/parsePhoneNumber.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/min/exports/isValidPhoneNumber.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/min/exports/isPossiblePhoneNumber.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/min/exports/validatePhoneNumberLength.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/min/exports/findNumbers.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/min/exports/searchNumbers.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/min/exports/findPhoneNumbersInText.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/min/exports/searchPhoneNumbersInText.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/min/exports/PhoneNumberMatcher.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/min/exports/AsYouType.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/min/exports/isSupportedCountry.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/min/exports/getCountries.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/min/exports/getCountryCallingCode.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/min/exports/getExtPrefix.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/min/exports/Metadata.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/min/exports/getExampleNumber.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/min/exports/formatIncompletePhoneNumber.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/min/exports/PhoneNumber.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/legacy/parse.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/index.es6.exports/parse.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/legacy/format.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/index.es6.exports/format.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/legacy/getNumberType.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/index.es6.exports/getNumberType.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/legacy/isPossibleNumber.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/index.es6.exports/isPossibleNumber.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/legacy/isValidNumber.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/index.es6.exports/isValidNumber.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/legacy/isValidNumberForRegion_.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/legacy/isValidNumberForRegion.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/index.es6.exports/isValidNumberForRegion.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/legacy/PhoneNumberSearch.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/legacy/findPhoneNumbersInitialImplementation.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/source/legacy/findPhoneNumbers.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/index.es6.exports/findPhoneNumbers.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/index.es6.exports/searchPhoneNumbers.js","../esm/npm/libphonenumber-js@1.13.9/node_modules/libphonenumber-js/index.es6.exports/PhoneNumberSearch.js"],"sourcesContent":["// This file is a workaround for a bug in web browsers' \"native\"\n// ES6 importing system which is uncapable of importing \"*.json\" files.\n// https://github.com/catamphetamine/libphonenumber-js/issues/239\nexport default {\"version\":4,\"country_calling_codes\":{\"1\":[\"US\",\"AG\",\"AI\",\"AS\",\"BB\",\"BM\",\"BS\",\"CA\",\"DM\",\"DO\",\"GD\",\"GU\",\"JM\",\"KN\",\"KY\",\"LC\",\"MP\",\"MS\",\"PR\",\"SX\",\"TC\",\"TT\",\"VC\",\"VG\",\"VI\"],\"7\":[\"RU\",\"KZ\"],\"20\":[\"EG\"],\"27\":[\"ZA\"],\"30\":[\"GR\"],\"31\":[\"NL\"],\"32\":[\"BE\"],\"33\":[\"FR\"],\"34\":[\"ES\"],\"36\":[\"HU\"],\"39\":[\"IT\",\"VA\"],\"40\":[\"RO\"],\"41\":[\"CH\"],\"43\":[\"AT\"],\"44\":[\"GB\",\"GG\",\"IM\",\"JE\"],\"45\":[\"DK\"],\"46\":[\"SE\"],\"47\":[\"NO\",\"SJ\"],\"48\":[\"PL\"],\"49\":[\"DE\"],\"51\":[\"PE\"],\"52\":[\"MX\"],\"53\":[\"CU\"],\"54\":[\"AR\"],\"55\":[\"BR\"],\"56\":[\"CL\"],\"57\":[\"CO\"],\"58\":[\"VE\"],\"60\":[\"MY\"],\"61\":[\"AU\",\"CC\",\"CX\"],\"62\":[\"ID\"],\"63\":[\"PH\"],\"64\":[\"NZ\"],\"65\":[\"SG\"],\"66\":[\"TH\"],\"81\":[\"JP\"],\"82\":[\"KR\"],\"84\":[\"VN\"],\"86\":[\"CN\"],\"90\":[\"TR\"],\"91\":[\"IN\"],\"92\":[\"PK\"],\"93\":[\"AF\"],\"94\":[\"LK\"],\"95\":[\"MM\"],\"98\":[\"IR\"],\"211\":[\"SS\"],\"212\":[\"MA\",\"EH\"],\"213\":[\"DZ\"],\"216\":[\"TN\"],\"218\":[\"LY\"],\"220\":[\"GM\"],\"221\":[\"SN\"],\"222\":[\"MR\"],\"223\":[\"ML\"],\"224\":[\"GN\"],\"225\":[\"CI\"],\"226\":[\"BF\"],\"227\":[\"NE\"],\"228\":[\"TG\"],\"229\":[\"BJ\"],\"230\":[\"MU\"],\"231\":[\"LR\"],\"232\":[\"SL\"],\"233\":[\"GH\"],\"234\":[\"NG\"],\"235\":[\"TD\"],\"236\":[\"CF\"],\"237\":[\"CM\"],\"238\":[\"CV\"],\"239\":[\"ST\"],\"240\":[\"GQ\"],\"241\":[\"GA\"],\"242\":[\"CG\"],\"243\":[\"CD\"],\"244\":[\"AO\"],\"245\":[\"GW\"],\"246\":[\"IO\"],\"247\":[\"AC\"],\"248\":[\"SC\"],\"249\":[\"SD\"],\"250\":[\"RW\"],\"251\":[\"ET\"],\"252\":[\"SO\"],\"253\":[\"DJ\"],\"254\":[\"KE\"],\"255\":[\"TZ\"],\"256\":[\"UG\"],\"257\":[\"BI\"],\"258\":[\"MZ\"],\"260\":[\"ZM\"],\"261\":[\"MG\"],\"262\":[\"RE\",\"YT\"],\"263\":[\"ZW\"],\"264\":[\"NA\"],\"265\":[\"MW\"],\"266\":[\"LS\"],\"267\":[\"BW\"],\"268\":[\"SZ\"],\"269\":[\"KM\"],\"290\":[\"SH\",\"TA\"],\"291\":[\"ER\"],\"297\":[\"AW\"],\"298\":[\"FO\"],\"299\":[\"GL\"],\"350\":[\"GI\"],\"351\":[\"PT\"],\"352\":[\"LU\"],\"353\":[\"IE\"],\"354\":[\"IS\"],\"355\":[\"AL\"],\"356\":[\"MT\"],\"357\":[\"CY\"],\"358\":[\"FI\",\"AX\"],\"359\":[\"BG\"],\"370\":[\"LT\"],\"371\":[\"LV\"],\"372\":[\"EE\"],\"373\":[\"MD\"],\"374\":[\"AM\"],\"375\":[\"BY\"],\"376\":[\"AD\"],\"377\":[\"MC\"],\"378\":[\"SM\"],\"380\":[\"UA\"],\"381\":[\"RS\"],\"382\":[\"ME\"],\"383\":[\"XK\"],\"385\":[\"HR\"],\"386\":[\"SI\"],\"387\":[\"BA\"],\"389\":[\"MK\"],\"420\":[\"CZ\"],\"421\":[\"SK\"],\"423\":[\"LI\"],\"500\":[\"FK\"],\"501\":[\"BZ\"],\"502\":[\"GT\"],\"503\":[\"SV\"],\"504\":[\"HN\"],\"505\":[\"NI\"],\"506\":[\"CR\"],\"507\":[\"PA\"],\"508\":[\"PM\"],\"509\":[\"HT\"],\"590\":[\"GP\",\"BL\",\"MF\"],\"591\":[\"BO\"],\"592\":[\"GY\"],\"593\":[\"EC\"],\"594\":[\"GF\"],\"595\":[\"PY\"],\"596\":[\"MQ\"],\"597\":[\"SR\"],\"598\":[\"UY\"],\"599\":[\"CW\",\"BQ\"],\"670\":[\"TL\"],\"672\":[\"NF\"],\"673\":[\"BN\"],\"674\":[\"NR\"],\"675\":[\"PG\"],\"676\":[\"TO\"],\"677\":[\"SB\"],\"678\":[\"VU\"],\"679\":[\"FJ\"],\"680\":[\"PW\"],\"681\":[\"WF\"],\"682\":[\"CK\"],\"683\":[\"NU\"],\"685\":[\"WS\"],\"686\":[\"KI\"],\"687\":[\"NC\"],\"688\":[\"TV\"],\"689\":[\"PF\"],\"690\":[\"TK\"],\"691\":[\"FM\"],\"692\":[\"MH\"],\"850\":[\"KP\"],\"852\":[\"HK\"],\"853\":[\"MO\"],\"855\":[\"KH\"],\"856\":[\"LA\"],\"880\":[\"BD\"],\"886\":[\"TW\"],\"960\":[\"MV\"],\"961\":[\"LB\"],\"962\":[\"JO\"],\"963\":[\"SY\"],\"964\":[\"IQ\"],\"965\":[\"KW\"],\"966\":[\"SA\"],\"967\":[\"YE\"],\"968\":[\"OM\"],\"970\":[\"PS\"],\"971\":[\"AE\"],\"972\":[\"IL\"],\"973\":[\"BH\"],\"974\":[\"QA\"],\"975\":[\"BT\"],\"976\":[\"MN\"],\"977\":[\"NP\"],\"992\":[\"TJ\"],\"993\":[\"TM\"],\"994\":[\"AZ\"],\"995\":[\"GE\"],\"996\":[\"KG\"],\"998\":[\"UZ\"]},\"countries\":{\"AC\":[\"247\",\"00\",\"(?:[01589]\\\\d|[2-467])\\\\d{4}\",[5,6]],\"AD\":[\"376\",\"00\",\"(?:1|6\\\\d)\\\\d{7}|[135-9]\\\\d{5}\",[6,8,9],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"[135-9]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"1\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]]]],\"AE\":[\"971\",\"00\",\"(?:[4-7]\\\\d|9[0-689])\\\\d{7}|800\\\\d{2,9}|[2-4679]\\\\d{7}\",[5,6,7,8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{2,9})\",\"$1 $2\",[\"60|8\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[236]|[479][2-8]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{5})\",\"$1 $2 $3\",[\"[479]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],\"0\"],\"AF\":[\"93\",\"00\",\"[2-7]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"]],\"0\"],\"AG\":[\"1\",\"011\",\"(?:268|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([457]\\\\d{6})$|1\",\"268$1\",0,\"268\"],\"AI\":[\"1\",\"011\",\"(?:264|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2457]\\\\d{6})$|1\",\"264$1\",0,\"264\"],\"AL\":[\"355\",\"00\",\"(?:700\\\\d\\\\d|900)\\\\d{3}|8\\\\d{5,7}|(?:[2-5]|6\\\\d)\\\\d{7}\",[6,7,8,9],[[\"(\\\\d{3})(\\\\d{3,4})\",\"$1 $2\",[\"80|9\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"4[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2358][2-5]|4\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[23578]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"]],\"0\"],\"AM\":[\"374\",\"00\",\"(?:[1-489]\\\\d|55|60|77)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]0\"],\"0 $1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2|3[12]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"1|47\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[3-9]\"],\"0$1\"]],\"0\"],\"AO\":[\"244\",\"00\",\"[29]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[29]\"]]]],\"AR\":[\"54\",\"00\",\"(?:11|[89]\\\\d\\\\d)\\\\d{8}|[2368]\\\\d{9}\",[10,11],[[\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2-$3\",[\"2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])\",\"2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\"0$1\",1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"1\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[68]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[23]\"],\"0$1\",1],[\"(\\\\d)(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9(?:2[2-469]|3[3-578])\",\"9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))\",\"9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\"0$1\",0,\"$1 $2 $3-$4\"],[\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$2 15-$3-$4\",[\"91\"],\"0$1\",0,\"$1 $2 $3-$4\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9\"],\"0$1\",0,\"$1 $2 $3-$4\"]],\"0\",0,\"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?\",\"9$1\"],\"AS\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|684|900)\\\\d{7}\",[10],0,\"1\",0,\"([267]\\\\d{6})$|1\",\"684$1\",0,\"684\"],\"AT\":[\"43\",\"00\",\"1\\\\d{3,12}|2\\\\d{6,12}|43(?:(?:0\\\\d|5[02-9])\\\\d{3,9}|2\\\\d{4,5}|[3467]\\\\d{4}|8\\\\d{4,6}|9\\\\d{4,7})|5\\\\d{4,12}|8\\\\d{7,12}|9\\\\d{8,12}|(?:[367]\\\\d|4[0-24-9])\\\\d{4,11}\",[4,5,6,7,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{3,12})\",\"$1 $2\",[\"1(?:11|[2-9])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})\",\"$1 $2\",[\"517\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"5[079]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,10})\",\"$1 $2\",[\"(?:31|4)6|51|6(?:48|5[0-3579]|[6-9])|7(?:20|32|8)|[89]\",\"(?:31|4)6|51|6(?:485|5[0-3579]|[6-9])|7(?:20|32|8)|[89]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,9})\",\"$1 $2\",[\"[2-467]|5[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4,7})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],\"0\"],\"AU\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{7}(?:\\\\d(?:\\\\d{2})?)?|8[0-24-9]\\\\d{7})|[2-478]\\\\d{8}|1\\\\d{4,7}\",[5,6,7,8,9,10,12],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"16\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"16\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"14|4\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[2378]\"],\"(0$1)\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:30|[89])\"]]],\"0\",0,\"(183[12])|0\",0,0,0,[[\"(?:(?:241|349)0\\\\d\\\\d|8(?:51(?:0(?:0[03-9]|[12479]\\\\d|3[2-9]|5[0-8]|6[1-9]|8[0-7])|1(?:[0235689]\\\\d|1[0-69]|4[0-589]|7[0-47-9])|2(?:0[0-79]|[18][13579]|2[14-9]|3[0-46-9]|[4-6]\\\\d|7[89]|9[0-4])|[34]\\\\d\\\\d)|91(?:(?:[0-58]\\\\d|6[0135-9])\\\\d|7(?:0[0-24-9]|[1-9]\\\\d)|9(?:[0-46-9]\\\\d|5[0-79]))))\\\\d{3}|(?:2(?:[0-26-9]\\\\d|3[0-8]|4[02-9]|5[0135-9])|3(?:[0-3589]\\\\d|4[0-578]|6[1-9]|7[0-35-9])|7(?:[013-57-9]\\\\d|2[0-8])|8(?:55|6[0-8]|[78]\\\\d|9[02-9]))\\\\d{6}\",[9]],[\"4(?:79[01]|83[0-36-9]|95[0-3])\\\\d{5}|4(?:[0-36]\\\\d|4[047-9]|[58][0-24-9]|7[02-8]|9[0-47-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,[\"163\\\\d{2,6}\",[5,6,7,8,9]],[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"AW\":[\"297\",\"00\",\"(?:[25-79]\\\\d\\\\d|800)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[25-9]\"]]]],\"AX\":[\"358\",\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"2\\\\d{4,9}|35\\\\d{4,5}|(?:60\\\\d\\\\d|800)\\\\d{4,6}|7\\\\d{5,11}|(?:[14]\\\\d|3[0-46-9]|50)\\\\d{4,8}\",[5,6,7,8,9,10,11,12],0,\"0\",0,0,0,0,\"18\",0,\"00\"],\"AZ\":[\"994\",\"00\",\"365\\\\d{6}|(?:[124579]\\\\d|60|88)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[28]|2|365|46\",\"1[28]|2|365[45]|46\",\"1[28]|2|365(?:4|5[02])|46\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[13-9]\"],\"0$1\"]],\"0\"],\"BA\":[\"387\",\"00\",\"6\\\\d{8}|(?:[35689]\\\\d|49|70)\\\\d{6}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[1-3]|[7-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2-$3\",[\"[3-5]|6[56]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"6\"],\"0$1\"]],\"0\"],\"BB\":[\"1\",\"011\",\"(?:246|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"246$1\",0,\"246\"],\"BD\":[\"880\",\"00\",\"[1-469]\\\\d{9}|8[0-79]\\\\d{7,8}|[2-79]\\\\d{8}|[2-9]\\\\d{7}|[3-9]\\\\d{6}|[57-9]\\\\d{5}\",[6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1-$2\",[\"31[5-8]|[459]1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1-$2\",[\"3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:[15]|28|4[14])|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,6})\",\"$1-$2\",[\"[13-9]|2[23]\"],\"0$1\"],[\"(\\\\d)(\\\\d{7,8})\",\"$1-$2\",[\"2\"],\"0$1\"]],\"0\"],\"BE\":[\"32\",\"00\",\"4\\\\d{8}|[1-9]\\\\d{7}\",[8,9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:80|9)0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[239]|4[23]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[15-8]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4\"],\"0$1\"]],\"0\"],\"BF\":[\"226\",\"00\",\"[024-7]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[024-7]\"]]]],\"BG\":[\"359\",\"00\",\"00800\\\\d{7}|[2-7]\\\\d{6,7}|[89]\\\\d{6,8}|2\\\\d{5}\",[6,7,8,9,12],[[\"(\\\\d)(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"43[1-6]|70[1-9]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:70|8)0\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"43[1-7]|7\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[48]|9[08]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\"],\"BH\":[\"973\",\"00\",\"[136-9]\\\\d{7}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[13679]|8[02-4679]\"]]]],\"BI\":[\"257\",\"00\",\"(?:[267]\\\\d|31)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2367]\"]]]],\"BJ\":[\"229\",\"00\",\"(?:01\\\\d|8)\\\\d{7}\",[8,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"0\"]]]],\"BL\":[\"590\",\"00\",\"7090\\\\d{5}|(?:[56]9|[89]\\\\d)\\\\d{7}\",[9],0,\"0\",0,0,0,0,0,[[\"(?:59(?:0(?:2[7-9]|3[3-7]|5[12]|87)|87\\\\d)|80[6-9]\\\\d\\\\d)\\\\d{4}\"],[\"(?:69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))|7090[0-4])\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],[\"8[129]\\\\d{7}\"],0,0,0,0,[\"9(?:(?:39[5-7]|76[018])\\\\d|475[0-6])\\\\d{4}\"]]],\"BM\":[\"1\",\"011\",\"(?:441|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"441$1\",0,\"441\"],\"BN\":[\"673\",\"00\",\"[2-578]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-578]\"]]]],\"BO\":[\"591\",\"00(?:1\\\\d)?\",\"(?:[2-7]\\\\d\\\\d|8001)\\\\d{5}\",[8,9],[[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[23]|4[46]|50\"]],[\"(\\\\d{8})\",\"$1\",[\"[5-7]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],\"0\",0,\"0(1\\\\d)?\"],\"BQ\":[\"599\",\"00\",\"(?:[34]1|7\\\\d)\\\\d{5}\",[7],0,0,0,0,0,0,\"[347]\"],\"BR\":[\"55\",\"00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)\",\"[1-467]\\\\d{9,10}|55[0-46-9]\\\\d{8}|[34]\\\\d{7}|55\\\\d{7,8}|(?:5[0-46-9]|[89]\\\\d)\\\\d{7,9}\",[8,9,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"300|4(?:0[02]|37|86)\",\"300|4(?:0(?:0|20)|370|864)\"]],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:[358]|90)0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]\"],\"($1)\"],[\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1 $2-$3\",[\"[16][1-9]|[2-57-9]\"],\"($1)\"]],\"0\",0,\"(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\\\d{10,11}))?\",\"$2\"],\"BS\":[\"1\",\"011\",\"(?:242|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([3-8]\\\\d{6})$|1\",\"242$1\",0,\"242\"],\"BT\":[\"975\",\"00\",\"[178]\\\\d{7}|[2-8]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-6]|7[246]|8[2-4]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[67]|[78]\"]]]],\"BW\":[\"267\",\"00\",\"(?:0800|(?:[37]|800)\\\\d)\\\\d{6}|(?:[2-6]\\\\d|90)\\\\d{5}\",[7,8,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"90\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[24-6]|3[15-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],\"BY\":[\"375\",\"810\",\"(?:[12]\\\\d|33|44|902)\\\\d{7}|8(?:0[0-79]\\\\d{5,7}|[1-7]\\\\d{9})|8(?:1[0-489]|[5-79]\\\\d)\\\\d{7}|8[1-79]\\\\d{6,7}|8[0-79]\\\\d{5}|8\\\\d{5}\",[6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"800\"],\"8 $1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,4})\",\"$1 $2 $3\",[\"800\"],\"8 $1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{3})\",\"$1 $2-$3\",[\"1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])\",\"1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])\"],\"8 0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"1(?:[56]|7[467])|2[1-3]\"],\"8 0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-4]\"],\"8 0$1\"],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"8 $1\"]],\"8\",0,\"0|80?\",0,0,0,0,\"8~10\"],\"BZ\":[\"501\",\"00\",\"(?:0800\\\\d|[2-8])\\\\d{6}\",[7,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-8]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"0\"]]]],\"CA\":[\"1\",\"011\",\"[2-9]\\\\d{9}|3\\\\d{6}\",[7,10],0,\"1\",0,0,0,0,0,[[\"(?:2(?:04|[23]6|[48]9|5[07]|63)|3(?:06|43|54|6[578]|82)|4(?:03|1[68]|[26]8|3[178]|50|74)|5(?:06|1[49]|48|79|8[147])|6(?:04|[18]3|39|47|72)|7(?:0[59]|42|53|78|8[02])|8(?:[06]7|19|25|7[39])|9(?:0[25]|42))[2-9]\\\\d{6}\",[10]],[\"\",[10]],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",[10]],[\"900[2-9]\\\\d{6}\",[10]],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|(?:5(?:2[125-9]|3[23]|44|66|77|88)|6(?:22|33))[2-9]\\\\d{6}\",[10]],0,[\"310\\\\d{4}\",[7]],0,[\"600[2-9]\\\\d{6}\",[10]]]],\"CC\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\",[6,7,8,9,10,12],0,\"0\",0,\"([59]\\\\d{7})$|0\",\"8$1\",0,0,[[\"8(?:51(?:0(?:02|31|60|89)|1(?:18|76)|223)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\\\\d|70[23]|959))\\\\d{3}\",[9]],[\"4(?:79[01]|83[0-36-9]|95[0-3])\\\\d{5}|4(?:[0-36]\\\\d|4[047-9]|[58][0-24-9]|7[02-8]|9[0-47-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,0,[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"CD\":[\"243\",\"00\",\"(?:(?:[189]|5\\\\d)\\\\d|2)\\\\d{7}|[1-68]\\\\d{6}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[1-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"5\"],\"0$1\"]],\"0\"],\"CF\":[\"236\",\"00\",\"8776\\\\d{4}|(?:[27]\\\\d|61)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[26-8]\"]]]],\"CG\":[\"242\",\"00\",\"222\\\\d{6}|(?:0\\\\d|80)\\\\d{7}\",[9],[[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[02]\"]]]],\"CH\":[\"41\",\"00\",\"8\\\\d{11}|[2-9]\\\\d{8}\",[9,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8[047]|90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-79]|81\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"8\"],\"0$1\"]],\"0\"],\"CI\":[\"225\",\"00\",\"[02]\\\\d{9}\",[10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d)(\\\\d{5})\",\"$1 $2 $3 $4\",[\"2\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"0\"]]]],\"CK\":[\"682\",\"00\",\"[2-578]\\\\d{4}\",[5],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"[2-578]\"]]]],\"CL\":[\"56\",\"(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0\",\"12300\\\\d{6}|6\\\\d{9,10}|[2-9]\\\\d{8}\",[9,10,11],[[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"219\",\"2196\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"60|809\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"44\"]],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[1-36]\"],\"($1)\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"9(?:10|[2-9])\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-8]|[1-9])\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"60|8\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"60\"]]]],\"CM\":[\"237\",\"00\",\"[26]\\\\d{8}|88\\\\d{6,7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"88\"]],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[26]|88\"]]]],\"CN\":[\"86\",\"00|1(?:[12]\\\\d|79)\\\\d\\\\d00\",\"(?:(?:1[03-689]|2\\\\d)\\\\d\\\\d|6)\\\\d{8}|1\\\\d{10}|[126]\\\\d{6}(?:\\\\d(?:\\\\d{2})?)?|86\\\\d{5,6}|(?:[3-579]\\\\d|8[0-57-9])\\\\d{5,9}\",[7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{5,6})\",\"$1 $2\",[\"(?:10|2[0-57-9])[19]|3(?:[157]|35|49|9[1-68])|4(?:1[124-9]|2[179]|6[47-9]|7|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:07|1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3|4[13]|5[1-5]|7[0-79]|9[0-35-9])|(?:4[35]|59|85)[1-9]\",\"(?:10|2[0-57-9])(?:1[02]|9[56])|8078|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))1\",\"10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|80781|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))12\",\"10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|807812|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))123\",\"10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:078|1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))123\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]\",\"(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))[19]\",\"85[23](?:10|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:10|9[56])\",\"85[23](?:100|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:100|9[56])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:4|80)0\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"10|2(?:[02-57-9]|1[1-9])\",\"10|2(?:[02-57-9]|1[1-9])\",\"10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"9\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"80\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-578]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"1[3-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"[12]\"],\"0$1\",1]],\"0\",0,\"(1(?:[12]\\\\d|79)\\\\d\\\\d)|0\",0,0,0,0,\"00\"],\"CO\":[\"57\",\"00(?:4(?:[14]4|56)|[579])\",\"(?:46|60\\\\d\\\\d)\\\\d{6}|(?:1\\\\d|[39])\\\\d{9}\",[8,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"46\"]],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"6|90\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"3[0-357]|9[14]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{7})\",\"$1-$2-$3\",[\"1\"],\"0$1\",0,\"$1 $2 $3\"]],\"0\",0,\"0([3579]|4(?:[14]4|56))?\"],\"CR\":[\"506\",\"00\",\"(?:8\\\\d|90)\\\\d{8}|(?:[24-8]\\\\d{3}|3005)\\\\d{4}\",[8,10],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[3-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[89]\"]]],0,0,\"(19(?:0[0-2468]|1[09]|20|66|77|99))\"],\"CU\":[\"53\",\"119\",\"(?:[2-7]|8\\\\d\\\\d)\\\\d{7}|[2-47]\\\\d{6}|[34]\\\\d{5}\",[6,7,8,10],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"2[1-4]|[34]\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{6,7})\",\"$1 $2\",[\"7\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[56]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"8\"],\"0$1\"]],\"0\"],\"CV\":[\"238\",\"0\",\"(?:[2-59]\\\\d\\\\d|800)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2-589]\"]]]],\"CW\":[\"599\",\"00\",\"(?:[34]1|60|(?:7|9\\\\d)\\\\d)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[3467]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9[4-8]\"]]],0,0,0,0,0,\"[69]\"],\"CX\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\",[6,7,8,9,10,12],0,\"0\",0,\"([59]\\\\d{7})$|0\",\"8$1\",0,0,[[\"8(?:51(?:0(?:01|30|59|88)|1(?:17|46|75)|2(?:22|35))|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\\\d|7(?:0[01]|1[0-2])|958))\\\\d{3}\",[9]],[\"4(?:79[01]|83[0-36-9]|95[0-3])\\\\d{5}|4(?:[0-36]\\\\d|4[047-9]|[58][0-24-9]|7[02-8]|9[0-47-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,0,[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"CY\":[\"357\",\"00\",\"(?:[279]\\\\d|[58]0)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[257-9]\"]]]],\"CZ\":[\"420\",\"00\",\"(?:[2-578]\\\\d|60)\\\\d{7}|9\\\\d{8,11}\",[9,10,11,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]|9[015-7]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"96\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]]],\"DE\":[\"49\",\"00\",\"[2579]\\\\d{5,14}|49(?:[34]0|69|8\\\\d)\\\\d\\\\d?|49(?:37|49|60|7[089]|9\\\\d)\\\\d{1,3}|49(?:2[024-9]|3[2-689]|7[1-7])\\\\d{1,8}|(?:1|[368]\\\\d|4[0-8])\\\\d{3,13}|49(?:[015]\\\\d|2[13]|31|[46][1-8])\\\\d{1,9}\",[4,5,6,7,8,9,10,11,12,13,14,15],[[\"(\\\\d{2})(\\\\d{3,13})\",\"$1 $2\",[\"3[02]|40|[68]9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,12})\",\"$1 $2\",[\"2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\",\"2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2,11})\",\"$1 $2\",[\"[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]\",\"[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"138\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{2,10})\",\"$1 $2\",[\"3\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,11})\",\"$1 $2\",[\"181\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{4,10})\",\"$1 $2 $3\",[\"1(?:3|80)|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"1[67]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7,12})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"185\",\"1850\",\"18500\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"18[68]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"15[1279]\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"15[03568]\",\"15(?:[0568]|3[13])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{8})\",\"$1 $2\",[\"18\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{7,8})\",\"$1 $2 $3\",[\"1(?:6[023]|7)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{7})\",\"$1 $2 $3\",[\"15[279]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{8})\",\"$1 $2 $3\",[\"15\"],\"0$1\"]],\"0\"],\"DJ\":[\"253\",\"00\",\"(?:2\\\\d|77)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[27]\"]]]],\"DK\":[\"45\",\"00\",\"[2-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-9]\"]]]],\"DM\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|767|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-7]\\\\d{6})$|1\",\"767$1\",0,\"767\"],\"DO\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"8001|8[024]9\"],\"DZ\":[\"213\",\"00\",\"(?:[1-4]|[5-79]\\\\d|80)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-4]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-8]\"],\"0$1\"]],\"0\"],\"EC\":[\"593\",\"00\",\"1\\\\d{9,10}|(?:[2-7]|9\\\\d)\\\\d{7}\",[8,9,10,11],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[2-7]\"],\"(0$1)\",0,\"$1-$2-$3\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"EE\":[\"372\",\"00\",\"8\\\\d{9}|[4578]\\\\d{7}|(?:[3-8]\\\\d|90)\\\\d{5}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88\",\"[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88\"]],[\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[45]|8(?:00|[1-49])\",\"[45]|8(?:00[1-9]|[1-49])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],\"EG\":[\"20\",\"00\",\"[189]\\\\d{8,9}|[24-6]\\\\d{8}|[135]\\\\d{7}\",[8,9,10],[[\"(\\\\d)(\\\\d{7,8})\",\"$1 $2\",[\"[23]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6,7})\",\"$1 $2\",[\"1[35]|[4-6]|8[2468]|9[235-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{8})\",\"$1 $2\",[\"1\"],\"0$1\"]],\"0\"],\"EH\":[\"212\",\"00\",\"[5-8]\\\\d{8}\",[9],0,\"0\",0,0,0,0,0,[[\"528[89]\\\\d{5}\"],[\"(?:6(?:[0-79]\\\\d|8[0-247-9])|7(?:[016-8]\\\\d|2[0-8]|5[0-5]))\\\\d{6}\"],[\"80[0-7]\\\\d{6}\"],[\"89\\\\d{7}\"],0,0,0,0,[\"(?:592(?:4[0-2]|93)|80[89]\\\\d\\\\d)\\\\d{4}\"]]],\"ER\":[\"291\",\"00\",\"[178]\\\\d{6}\",[7],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[178]\"],\"0$1\"]],\"0\"],\"ES\":[\"34\",\"00\",\"(?:400|[5-9]\\\\d\\\\d)\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]00\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[4-9]\"]]]],\"ET\":[\"251\",\"00\",\"(?:11|[2-57-9]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-57-9]\"],\"0$1\"]],\"0\"],\"FI\":[\"358\",\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"[1-35689]\\\\d{4}|7\\\\d{10,11}|(?:[124-7]\\\\d|3[0-46-9])\\\\d{8}|[1-9]\\\\d{5,8}\",[5,6,7,8,9,10,11,12],[[\"(\\\\d{5})\",\"$1\",[\"20[2-59]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"(?:[1-3]0|[68])0|70[07-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4,8})\",\"$1 $2\",[\"[14]|2[09]|50|7[135]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6,10})\",\"$1 $2\",[\"7\"],\"0$1\"],[\"(\\\\d)(\\\\d{4,9})\",\"$1 $2\",[\"(?:19|[2568])[1-8]|3(?:0[1-9]|[1-9])|9\"],\"0$1\"]],\"0\",0,0,0,0,\"1[03-79]|[2-9]\",0,\"00\"],\"FJ\":[\"679\",\"0(?:0|52)\",\"45\\\\d{5}|(?:0800\\\\d|[235-9])\\\\d{6}\",[7,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[235-9]|45\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]]],0,0,0,0,0,0,0,\"00\"],\"FK\":[\"500\",\"00\",\"[2-7]\\\\d{4}\",[5]],\"FM\":[\"691\",\"00\",\"(?:[39]\\\\d\\\\d|820)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[389]\"]]]],\"FO\":[\"298\",\"00\",\"[2-9]\\\\d{5}\",[6],[[\"(\\\\d{6})\",\"$1\",[\"[2-9]\"]]],0,0,\"(10(?:01|[12]0|88))\"],\"FR\":[\"33\",\"00\",\"[1-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0 $1\"],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[1-79]\"],\"0$1\"]],\"0\"],\"GA\":[\"241\",\"00\",\"(?:[067]\\\\d|11)\\\\d{6}|[2-7]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-7]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"11|[67]\"],\"0$1\"]],0,0,\"0(11\\\\d{6}|60\\\\d{6}|61\\\\d{6}|6[256]\\\\d{6}|7[467]\\\\d{6})\",\"$1\"],\"GB\":[\"44\",\"00\",\"[1-357-9]\\\\d{9}|[18]\\\\d{8}|8\\\\d{6}\",[7,9,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"800\",\"8001\",\"80011\",\"800111\",\"8001111\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"845\",\"8454\",\"84546\",\"845464\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"800\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"1(?:38|5[23]|69|76|94)\",\"1(?:(?:38|69)7|5(?:24|39)|768|946)\",\"1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"1(?:[2-69][02-9]|[78])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[25]|7(?:0|6[02-9])\",\"[25]|7(?:0|6(?:[03-9]|2[356]))\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1389]\"],\"0$1\"]],\"0\",0,\"0|180020\",0,0,0,[[\"(?:1(?:1(?:3(?:[0-58]\\\\d\\\\d|73[0-5])|4(?:(?:[0-5]\\\\d|70)\\\\d|69[7-9])|(?:(?:5[0-26-9]|[78][0-49])\\\\d|6(?:[0-4]\\\\d|5[01]))\\\\d)|(?:2(?:(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\\\d)\\\\d|1(?:[0-7]\\\\d|8[0-3]))|(?:3(?:0\\\\d|1[0-8]|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[137]\\\\d|[28][02-57-9]|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|[16]\\\\d|2[024-9]|3[015689]|4[02-9]|5[03-9]|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|1\\\\d|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0-24578])|7(?:0[0246-9]|2\\\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\\\d|8[02-9]|9[02569])|9(?:0[02-589]|[18]\\\\d|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|9[2-57]))\\\\d)\\\\d)|2(?:0[013478]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\\\d{3})\\\\d{4}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[3-5])))|3(?:6(?:38[2-5]|47[23])|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[1-3]))|5(?:2(?:4(?:3[2-79]|6\\\\d)|76\\\\d)|6(?:26[06-9]|686))|6(?:06(?:4\\\\d|7[4-79])|295[5-7]|35[34]\\\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|9(?:55[0-4]|77[23]))|7(?:26(?:6[13-9]|7[0-7])|(?:442|688)\\\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\\\d|37(?:5[2-5]|8[239])|843[2-58])|9(?:0(?:0(?:6[1-8]|85)|52\\\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\\\d{3}\",[9,10]],[\"7(?:457[0-57-9]|700[01]|911[028])\\\\d{5}|7(?:[1-3]\\\\d\\\\d|4(?:[0-46-9]\\\\d|5[0-689])|5(?:0[0-8]|[13-9]\\\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\\\d|8[02-9]|9[0-689])|8(?:[014-9]\\\\d|[23][0-8])|9(?:[024-9]\\\\d|1[02-9]|3[0-689]))\\\\d{6}\",[10]],[\"80[08]\\\\d{7}|800\\\\d{6}|8001111\"],[\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[2-49]))\\\\d{7}|845464\\\\d\",[7,10]],[\"70\\\\d{8}\",[10]],0,[\"(?:3[0347]|55)\\\\d{8}\",[10]],[\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\",[10]],[\"56\\\\d{8}\",[10]]],0,\" x\"],\"GD\":[\"1\",\"011\",\"(?:473|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"473$1\",0,\"473\"],\"GE\":[\"995\",\"00\",\"(?:[3-57]\\\\d\\\\d|800)\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"32\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5(?:[0-46-9]|5[0-57-9])|7\",\"5(?:[0-46-9]|5(?:[0-357-9]|44))|7\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[3-58]\"],\"0$1\"]],\"0\"],\"GF\":[\"594\",\"00\",\"(?:694\\\\d|7093)\\\\d{5}|(?:59|[89]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-7]|80[6-9]|9[47]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[89]\"],\"0$1\"]],\"0\"],\"GG\":[\"44\",\"00\",\"(?:1481|[357-9]\\\\d{3})\\\\d{6}|8\\\\d{6}(?:\\\\d{2})?\",[7,9,10],0,\"0\",0,\"([25-9]\\\\d{5})$|0|180020\",\"1481$1\",0,0,[[\"1481[25-9]\\\\d{5}\",[10]],[\"7(?:(?:781|839)\\\\d|911[17])\\\\d{5}\",[10]],[\"80[08]\\\\d{7}|800\\\\d{6}|8001111\"],[\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[0-3]))\\\\d{7}|845464\\\\d\",[7,10]],[\"70\\\\d{8}\",[10]],0,[\"(?:3[0347]|55)\\\\d{8}\",[10]],[\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\",[10]],[\"56\\\\d{8}\",[10]]]],\"GH\":[\"233\",\"00\",\"[235]\\\\d{8}|800\\\\d{5,6}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2358]\"],\"0$1\"]],\"0\"],\"GI\":[\"350\",\"00\",\"(?:[25]\\\\d|60)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2\"]]]],\"GL\":[\"299\",\"00\",\"(?:19|[2-689]\\\\d|70)\\\\d{4}\",[6],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"19|[2-9]\"]]]],\"GM\":[\"220\",\"00\",\"[2-9]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]]],\"GN\":[\"224\",\"00\",\"722\\\\d{6}|(?:3|6\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"3\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[67]\"]]]],\"GP\":[\"590\",\"00\",\"7090\\\\d{5}|(?:[56]9|[89]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-79]|80[6-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:59(?:0(?:0[1-68]|[14][0-24-9]|2[0-68]|3[1-9]|5[3-579]|[68][0-689]|7[08]|9\\\\d)|87\\\\d)|80[6-9]\\\\d\\\\d)\\\\d{4}\"],[\"(?:69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))|7090[0-4])\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],[\"8[129]\\\\d{7}\"],0,0,0,0,[\"9(?:(?:39[5-7]|76[018])\\\\d|475[0-6])\\\\d{4}\"]]],\"GQ\":[\"240\",\"00\",\"222\\\\d{6}|(?:3\\\\d|55|[89]0)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235]\"]],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[89]\"]]]],\"GR\":[\"30\",\"00\",\"5005000\\\\d{3}|8\\\\d{9,11}|(?:[269]\\\\d|70)\\\\d{8}\",[10,11,12],[[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"21|7\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2689]\"]],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{5})\",\"$1 $2 $3\",[\"8\"]]]],\"GT\":[\"502\",\"00\",\"80\\\\d{6}|(?:1\\\\d{3}|[2-7])\\\\d{7}\",[8,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-8]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]]],\"GU\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|671|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"671$1\",0,\"671\"],\"GW\":[\"245\",\"00\",\"[49]\\\\d{8}|4\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"40\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"]]]],\"GY\":[\"592\",\"001\",\"(?:[2-8]\\\\d{3}|9008)\\\\d{3}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]]],\"HK\":[\"852\",\"00(?:30|5[09]|[126-9]?)\",\"8[0-46-9]\\\\d{6,7}|9\\\\d{4,7}|(?:[2-7]|9\\\\d{3})\\\\d{7}\",[5,6,7,8,9,11],[[\"(\\\\d{3})(\\\\d{2,5})\",\"$1 $2\",[\"900\",\"9003\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[1-4]|9(?:0[1-9]|[1-8])\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]],0,0,0,0,0,0,0,\"00\"],\"HN\":[\"504\",\"00\",\"8\\\\d{10}|[237-9]\\\\d{7}\",[8,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[237-9]\"]]]],\"HR\":[\"385\",\"00\",\"[2-69]\\\\d{8}|80\\\\d{5,7}|[1-79]\\\\d{7}|6\\\\d{6}\",[7,8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"6[01]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"6|7[245]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-57]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],\"HT\":[\"509\",\"00\",\"[2-589]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-589]\"]]]],\"HU\":[\"36\",\"00\",\"[235-7]\\\\d{8}|[1-9]\\\\d{7}\",[8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(06 $1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]\"],\"(06 $1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"06 $1\"]],\"06\"],\"ID\":[\"62\",\"00[89]\",\"00[1-9]\\\\d{9,14}|(?:[1-36]|8\\\\d{5})\\\\d{6}|00\\\\d{9}|[1-9]\\\\d{8,10}|[2-9]\\\\d{7}\",[7,8,9,10,11,12,13,14,15,16,17],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"15\"]],[\"(\\\\d{2})(\\\\d{5,9})\",\"$1 $2\",[\"2[124]|[36]1\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5,7})\",\"$1 $2\",[\"800\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,8})\",\"$1 $2\",[\"[2-79]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{3})\",\"$1-$2-$3\",[\"8[1-35-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6,8})\",\"$1 $2\",[\"1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"804\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"80\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"]],\"0\"],\"IE\":[\"353\",\"00\",\"(?:1\\\\d|[2569])\\\\d{6,8}|4\\\\d{6,9}|7\\\\d{8}|8\\\\d{8,9}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"2[24-9]|47|58|6[237-9]|9[35-9]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[45]0\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2569]|4[1-69]|7[14]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"81\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"4\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"IL\":[\"972\",\"0(?:0|1[2-9])\",\"1\\\\d{6}(?:\\\\d{3,5})?|[57]\\\\d{8}|[1-489]\\\\d{7}\",[7,8,9,10,11,12],[[\"(\\\\d{4})(\\\\d{3})\",\"$1-$2\",[\"125\"]],[\"(\\\\d{4})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"121\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[2-489]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"12\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1-$2\",[\"159\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"1[7-9]\"]],[\"(\\\\d{3})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3-$4\",[\"15\"]]],\"0\"],\"IM\":[\"44\",\"00\",\"1624\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",[10],0,\"0\",0,\"([25-8]\\\\d{5})$|0|180020\",\"1624$1\",0,\"74576|(?:16|7[56])24\"],\"IN\":[\"91\",\"00\",\"(?:000800|[2-9]\\\\d\\\\d)\\\\d{7}|1\\\\d{7,12}\",[8,9,10,11,12,13],[[\"(\\\\d{8})\",\"$1\",[\"5(?:0|2[23]|3[03]|[67]1|88)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)\"],0,1],[\"(\\\\d{4})(\\\\d{4,5})\",\"$1 $2\",[\"180\",\"1800\"],0,1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"140\"],0,1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"11|2[02]|33|4[04]|79[1-7]|80[2-46]\",\"11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])\",\"11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67)[14]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31)|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:3171|5[15][2-6]|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|8(?:16|2[014]|3[126]|6[136]|7[78]|83)(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|3[129]|5[29]|6[02-5]|70)|807\",\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7(?:[23569]|8[0-57-9])|8[1-6])|7(?:1(?:[013-8]|9[6-9])|3(?:17|2[0-49]|9[2-57])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]\",\"1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|8(?:28[235-7]|3))|73179|807(?:1|9[1-3])|(?:1552|6(?:(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578])\\\\d|7(?:[23569]\\\\d|8[0-57-9])|8(?:[14-6]\\\\d|2[0-79]))|7(?:1(?:[013-8]\\\\d|9[6-9])|3(?:2[0-49]|9[2-57])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\\\d|5[0-367])|70[13-7]))[2-7]\"],\"0$1\",1],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"16|[6-9]\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{2,4})(\\\\d{4})\",\"$1 $2 $3\",[\"18[06]\",\"18[06]0\"],0,1],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"18\"],0,1]],\"0\"],\"IO\":[\"246\",\"00\",\"3\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"3\"]]]],\"IQ\":[\"964\",\"00\",\"(?:1|7\\\\d\\\\d)\\\\d{7}|[2-6]\\\\d{7,8}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-6]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\"],\"IR\":[\"98\",\"00\",\"[1-9]\\\\d{9}|(?:[1-8]\\\\d\\\\d|9)\\\\d{3,4}\",[4,5,6,7,10],[[\"(\\\\d{4,5})\",\"$1\",[\"96\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4,5})\",\"$1 $2\",[\"(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-8]\"],\"0$1\"]],\"0\"],\"IS\":[\"354\",\"00|1(?:0(?:01|[12]0)|100)\",\"(?:38\\\\d|[4-9])\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[4-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"3\"]]],0,0,0,0,0,0,0,\"00\"],\"IT\":[\"39\",\"00\",\"0\\\\d{5,11}|1\\\\d{8,10}|3(?:[0-8]\\\\d{7,10}|9\\\\d{7,8})|(?:43|55|70)\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?\",[6,7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"0[26]\"]],[\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"0[13-57-9][0159]|8(?:03|4[17]|9[2-5])\",\"0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))\"]],[\"(\\\\d{4})(\\\\d{2,6})\",\"$1 $2\",[\"0(?:[13-579][2-46-8]|8[236-8])\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"894\"]],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[26]|5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1(?:44|[679])|[378]|43\"]],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[13-57-9][0159]|14\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{5})\",\"$1 $2 $3\",[\"0[26]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"[03]\"]]],0,0,0,0,0,0,[[\"0(?:669[0-79]\\\\d{1,6}|831\\\\d{2,8})|0(?:1(?:[0159]\\\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|2\\\\d\\\\d|3(?:[0159]\\\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|6(?:[0-57-9]\\\\d|6[0-8])|7(?:[0159]\\\\d|2[12]|3[1-7]|4[2-46]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\\\d|2[3-578]|3[2356]|[6-8][1-5])|9(?:[0159]\\\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\\\d{2,7}\"],[\"3[2-9]\\\\d{7,8}|(?:31|43)\\\\d{8}\",[9,10]],[\"80(?:0\\\\d{3}|3)\\\\d{3}\",[6,9]],[\"(?:0878\\\\d{3}|89(?:2\\\\d|3[04]|4(?:[0-4]|[5-9]\\\\d\\\\d)|5[0-4]))\\\\d\\\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\\\d{6}\",[6,8,9,10]],[\"1(?:78\\\\d|99)\\\\d{6}\",[9,10]],[\"3[2-8]\\\\d{9,10}\",[11,12]],0,0,[\"55\\\\d{8}\",[10]],[\"84(?:[08]\\\\d{3}|[17])\\\\d{3}\",[6,9]]]],\"JE\":[\"44\",\"00\",\"1534\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",[10],0,\"0\",0,\"([0-24-8]\\\\d{5})$|0|180020\",\"1534$1\",0,0,[[\"1534[0-24-8]\\\\d{5}\"],[\"7(?:(?:(?:50|82)9|937)\\\\d|7(?:00[378]|97\\\\d))\\\\d{5}\"],[\"80(?:07(?:35|81)|8901)\\\\d{4}\"],[\"(?:8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|90(?:066[59]|1810|71(?:07|55)))\\\\d{4}\"],[\"701511\\\\d{4}\"],0,[\"(?:3(?:0(?:07(?:35|81)|8901)|3\\\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|55\\\\d{4})\\\\d{4}\"],[\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\"],[\"56\\\\d{8}\"]]],\"JM\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|658|900)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"658|876\"],\"JO\":[\"962\",\"00\",\"(?:(?:[2689]|7\\\\d)\\\\d|32|427|53)\\\\d{6}\",[8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2356]|87\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"70\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[47]\"],\"0$1\"]],\"0\"],\"JP\":[\"81\",\"010\",\"00[1-9]\\\\d{6,14}|[25-9]\\\\d{9}|(?:00|[1-9]\\\\d\\\\d)\\\\d{6}\",[8,9,10,11,12,13,14,15,16,17],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"(?:12|57|99)0\"],\"0$1\"],[\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51)|9(?:80|9[16])\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"3|4(?:2[09]|7[01])|6[1-9]\",\"3|4(?:2(?:0|9[02-69])|7(?:0[019]|1))|6[1-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[0459]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[26-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9]|9[29])|5(?:2|3(?:[045]|9[0-8])|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|3(?:[29]|60)|49|51|6(?:[0-24]|36|5[0-3589]|7[23]|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3(?:[045]|9(?:[0-58]|6[4-9]|7[0-35689]))|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|60|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[2-57-9]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|7(?:2[2-468]|3[78])|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3\",[\"[14]|[289][2-9]|5[3-9]|7[2-4679]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"800\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[25-9]\"],\"0$1\"]],\"0\",0,\"(000[2569]\\\\d{4,6})$|(?:(?:003768)0?)|0\",\"$1\"],\"KE\":[\"254\",\"000\",\"(?:[17]\\\\d\\\\d|900)\\\\d{6}|(?:2|80)0\\\\d{6,7}|[4-6]\\\\d{6,8}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"[24-6]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[17]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\"],\"KG\":[\"996\",\"00\",\"8\\\\d{9}|[235-9]\\\\d{8}\",[9,10],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"3(?:1[346]|[24-79])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235-79]|88\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d)(\\\\d{2,3})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"KH\":[\"855\",\"00[14-9]\",\"1\\\\d{9}|[1-9]\\\\d{7,8}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"KI\":[\"686\",\"00\",\"(?:[37]\\\\d|6[0-79])\\\\d{6}|(?:[2-48]\\\\d|50)\\\\d{3}\",[5,8],0,\"0\"],\"KM\":[\"269\",\"00\",\"[3478]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[3478]\"]]]],\"KN\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-7]\\\\d{6})$|1\",\"869$1\",0,\"869\"],\"KP\":[\"850\",\"00|99\",\"85\\\\d{6}|(?:19\\\\d|[2-7])\\\\d{7}\",[8,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"]],\"0\"],\"KR\":[\"82\",\"00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))\",\"00[1-9]\\\\d{8,11}|(?:[12]|5\\\\d{3})\\\\d{7}|[13-6]\\\\d{9}|(?:[1-6]\\\\d|80)\\\\d{7}|[3-6]\\\\d{4,5}|(?:00|7)0\\\\d{8}\",[5,6,8,9,10,11,12,13,14],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1-$2\",[\"(?:3[1-3]|[46][1-4]|5[1-5])1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"1\"]],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[36]0|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"[1346]|5[1-5]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1-$2-$3\",[\"5\"],\"0$1\"]],\"0\",0,\"0(8(?:[1-46-8]|5\\\\d\\\\d))?\"],\"KW\":[\"965\",\"00\",\"18\\\\d{5}|(?:[2569]\\\\d|41)\\\\d{6}\",[7,8],[[\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[169]|2(?:[235]|4[1-35-9])|52\"]],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[245]\"]]]],\"KY\":[\"1\",\"011\",\"(?:345|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"345$1\",0,\"345\"],\"KZ\":[\"7\",\"810\",\"8\\\\d{13}|[78]\\\\d{9}\",[10,14],0,\"8\",0,0,0,0,\"7\",0,\"8~10\"],\"LA\":[\"856\",\"00\",\"[23]\\\\d{9}|3\\\\d{8}|(?:[235-8]\\\\d|41)\\\\d{6}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2[13]|3[14]|[4-8]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"3\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],\"0\"],\"LB\":[\"961\",\"00\",\"[27-9]\\\\d{7}|[13-9]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[13-69]|7(?:[2-57]|62|8[0-6]|9[04-9])|8[02-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[27-9]\"]]],\"0\"],\"LC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|758|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-8]\\\\d{6})$|1\",\"758$1\",0,\"758\"],\"LI\":[\"423\",\"00\",\"[68]\\\\d{8}|(?:[2378]\\\\d|90)\\\\d{5}\",[7,9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2379]|8(?:0[09]|7)\",\"[2379]|8(?:0(?:02|9)|7)\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"69\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]]],\"0\",0,\"(1001)|0\"],\"LK\":[\"94\",\"00\",\"[1-9]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[1-689]\"],\"0$1\"]],\"0\"],\"LR\":[\"231\",\"00\",\"(?:[2457]\\\\d|33|88)\\\\d{7}|(?:2\\\\d|[4-6])\\\\d{6}\",[7,8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"4[67]|[56]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-578]\"],\"0$1\"]],\"0\"],\"LS\":[\"266\",\"00\",\"(?:[256]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2568]\"]]]],\"LT\":[\"370\",\"00\",\"(?:[3469]\\\\d|52|[78]0)\\\\d{6}\",[8],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"52[0-7]\"],\"(0-$1)\",1],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"0 $1\",1],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"37|4(?:[15]|6[1-8])\"],\"(0-$1)\",1],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[3-6]\"],\"(0-$1)\",1]],\"0\",0,\"[08]\"],\"LU\":[\"352\",\"00\",\"35[013-9]\\\\d{4,8}|6\\\\d{8}|35\\\\d{2,4}|(?:[2457-9]\\\\d|3[0-46-9])\\\\d{2,9}\",[4,5,6,7,8,9,10,11],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"20[2-689]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4\",[\"20\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,5})\",\"$1 $2 $3 $4\",[\"[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"80[01]|90[015]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"20\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4 $5\",[\"20\"]]],0,0,\"(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\\\d)\"],\"LV\":[\"371\",\"00\",\"(?:[268]\\\\d|78|90)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2679]|8[01]\"]]]],\"LY\":[\"218\",\"00\",\"[2-9]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"[2-9]\"],\"0$1\"]],\"0\"],\"MA\":[\"212\",\"00\",\"[5-8]\\\\d{8}\",[9],[[\"(\\\\d{4})(\\\\d{5})\",\"$1-$2\",[\"892\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"8(?:0[0-7]|9)\"],\"0$1\"],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[5-8]\"],\"0$1\"]],\"0\",0,0,0,0,\"[5-8]\"],\"MC\":[\"377\",\"00\",\"(?:[3489]|[67]\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"4\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[389]\"]],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[67]\"],\"0$1\"]],\"0\"],\"MD\":[\"373\",\"00\",\"(?:[235-7]\\\\d|[89]0)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"22|3\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[25-7]\"],\"0$1\"]],\"0\"],\"ME\":[\"382\",\"00\",\"(?:20|[3-79]\\\\d)\\\\d{6}|80\\\\d{6,7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"0$1\"]],\"0\"],\"MF\":[\"590\",\"00\",\"7090\\\\d{5}|(?:[56]9|[89]\\\\d)\\\\d{7}\",[9],0,\"0\",0,0,0,0,0,[[\"(?:59(?:0(?:0[079]|[14]3|[27][79]|3[03-7]|5[0-268]|87)|87\\\\d)|80[6-9]\\\\d\\\\d)\\\\d{4}\"],[\"(?:69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))|7090[0-4])\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],[\"8[129]\\\\d{7}\"],0,0,0,0,[\"9(?:(?:39[5-7]|76[018])\\\\d|475[0-6])\\\\d{4}\"]]],\"MG\":[\"261\",\"00\",\"[23]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],\"0\",0,\"([24-9]\\\\d{6})$|0\",\"20$1\"],\"MH\":[\"692\",\"011\",\"329\\\\d{4}|(?:[256]\\\\d|45)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-6]\"]]],\"1\"],\"MK\":[\"389\",\"00\",\"[2-578]\\\\d{7}\",[8],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2|34[47]|4(?:[37]7|5[47]|64)\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[347]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[58]\"],\"0$1\"]],\"0\"],\"ML\":[\"223\",\"00\",\"[24-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24-9]\"]]]],\"MM\":[\"95\",\"00\",\"1\\\\d{5,7}|95\\\\d{6}|(?:[4-7]|9[0-46-9])\\\\d{6,8}|(?:2|8\\\\d)\\\\d{5,8}\",[6,7,8,9,10],[[\"(\\\\d)(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"16|2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"4(?:[2-46]|5[3-5])|5|6(?:[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-5]|(?:60|86)[23]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[12]|452|678|86\",\"[12]|452|6788|86\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[4-7]|8[1-35]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4,6})\",\"$1 $2 $3\",[\"9(?:2[0-4]|[35-9]|4[137-9])\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"92\"],\"0$1\"],[\"(\\\\d)(\\\\d{5})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\"],\"MN\":[\"976\",\"001\",\"[12]\\\\d{7,9}|[5-9]\\\\d{7}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"11|2[16]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[5-9]\"]],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[12]2[1-3]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])\",\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"[12]\"],\"0$1\"]],\"0\"],\"MO\":[\"853\",\"00\",\"0800\\\\d{3}|(?:28|[68]\\\\d)\\\\d{6}\",[7,8],[[\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[268]\"]]]],\"MP\":[\"1\",\"011\",\"[58]\\\\d{9}|(?:67|90)0\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"670$1\",0,\"670\"],\"MQ\":[\"596\",\"00\",\"7091\\\\d{5}|(?:[56]9|[89]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-79]|8(?:0[6-9]|[36])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"MR\":[\"222\",\"00\",\"(?:[2-4]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-48]\"]]]],\"MS\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|664|900)\\\\d{7}\",[10],0,\"1\",0,\"([34]\\\\d{6})$|1\",\"664$1\",0,\"664\"],\"MT\":[\"356\",\"00\",\"3550\\\\d{4}|(?:[2579]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2357-9]\"]]]],\"MU\":[\"230\",\"0(?:0|[24-7]0|3[03])\",\"(?:[57]|8\\\\d\\\\d)\\\\d{7}|[2-468]\\\\d{6}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-46]|8[013]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[57]\"]],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"8\"]]],0,0,0,0,0,0,0,\"020\"],\"MV\":[\"960\",\"0(?:0|19)\",\"(?:800|9[0-57-9]\\\\d)\\\\d{7}|[34679]\\\\d{6}\",[7,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[34679]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]],0,0,0,0,0,0,0,\"00\"],\"MW\":[\"265\",\"00\",\"(?:[1289]\\\\d|31|77)\\\\d{7}|1\\\\d{6}\",[7,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-37-9]\"],\"0$1\"]],\"0\"],\"MX\":[\"52\",\"0[09]\",\"[2-9]\\\\d{9}\",[10],[[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"33|5[56]|81\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-9]\"]]],0,0,0,0,0,0,0,\"00\"],\"MY\":[\"60\",\"00\",\"1\\\\d{8,9}|(?:3\\\\d|[4-9])\\\\d{7}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"[4-79]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1-$2 $3\",[\"1(?:[02469]|[378][1-9]|53)|8\",\"1(?:[02469]|[37][1-9]|53|8(?:[1-46-9]|5[7-9]))|8\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"3\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3-$4\",[\"1(?:[367]|80)\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"15\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"1\"],\"0$1\"]],\"0\"],\"MZ\":[\"258\",\"00\",\"(?:2|8\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2|8[2-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],\"NA\":[\"264\",\"00\",\"[68]\\\\d{7,8}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"87\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],\"NC\":[\"687\",\"00\",\"(?:050|[2-57-9]\\\\d\\\\d)\\\\d{3}\",[6],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1.$2.$3\",[\"[02-57-9]\"]]]],\"NE\":[\"227\",\"00\",\"[027-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"08\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[089]|2[013]|7[0467]\"]]]],\"NF\":[\"672\",\"00\",\"[13]\\\\d{5}\",[6],[[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"1[0-3]\"]],[\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"[13]\"]]],0,0,\"([0-258]\\\\d{4})$\",\"3$1\"],\"NG\":[\"234\",\"009\",\"(?:20|9\\\\d)\\\\d{8}|[78]\\\\d{9,13}\",[10,11,12,13,14],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"20[129]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})(\\\\d{5,6})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"]],\"0\"],\"NI\":[\"505\",\"00\",\"(?:1800|[25-8]\\\\d{3})\\\\d{4}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[125-8]\"]]]],\"NL\":[\"31\",\"00\",\"(?:[124-7]\\\\d\\\\d|3(?:[02-9]\\\\d|1[0-8]))\\\\d{6}|8\\\\d{6,9}|9\\\\d{6,10}|1\\\\d{4,5}\",[5,6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{4,7})\",\"$1 $2\",[\"[89]0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"66\"],\"0$1\"],[\"(\\\\d)(\\\\d{8})\",\"$1 $2\",[\"6\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[16-8]|2[259]|3[124]|4[17-9]|5[124679]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-578]|91\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\"],\"NO\":[\"47\",\"00\",\"(?:0|[2-9]\\\\d{3})\\\\d{4}\",[5,8],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-79]\"]]],0,0,0,0,0,\"[02-689]|7[0-8]\"],\"NP\":[\"977\",\"00\",\"(?:1\\\\d|9)\\\\d{9}|[1-9]\\\\d{7}\",[8,10,11],[[\"(\\\\d)(\\\\d{7})\",\"$1-$2\",[\"1[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1-$2\",[\"1[01]|[2-8]|9(?:[1-59]|[67][2-6])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"9\"]]],\"0\"],\"NR\":[\"674\",\"00\",\"(?:222|444|(?:55|8\\\\d)\\\\d|666|777|999)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[24-9]\"]]]],\"NU\":[\"683\",\"00\",\"(?:[4-7]|888\\\\d)\\\\d{3}\",[4,7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"8\"]]]],\"NZ\":[\"64\",\"0(?:0|161)\",\"[1289]\\\\d{9}|50\\\\d{5}(?:\\\\d{2,3})?|[27-9]\\\\d{7,8}|(?:[34]\\\\d|6[0-35-9])\\\\d{6}|8\\\\d{4,6}\",[5,6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{3,8})\",\"$1 $2\",[\"8[1-79]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"50[036-8]|8|90\",\"50(?:[0367]|88)|8|90\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"24|[346]|7[2-57-9]|9[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:10|74)|[589]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1|2[028]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,5})\",\"$1 $2 $3\",[\"2(?:[169]|7[0-35-9])|7\"],\"0$1\"]],\"0\",0,0,0,0,0,0,\"00\"],\"OM\":[\"968\",\"00\",\"(?:1505|[279]\\\\d{3}|500)\\\\d{4}|800\\\\d{5,6}\",[7,8,9],[[\"(\\\\d{3})(\\\\d{4,6})\",\"$1 $2\",[\"[58]\"]],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"2\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[179]\"]]]],\"PA\":[\"507\",\"00\",\"(?:00800|8\\\\d{3})\\\\d{6}|[68]\\\\d{7}|[1-57-9]\\\\d{6}\",[7,8,10,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[1-57-9]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[68]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]]],\"PE\":[\"51\",\"00|19(?:1[124]|77|90)00\",\"(?:[14-8]|9\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"1\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[4-8]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"]]],\"0\",0,0,0,0,0,0,\"00\",\" Anexo \"],\"PF\":[\"689\",\"00\",\"4\\\\d{5}(?:\\\\d{2})?|8\\\\d{7,8}\",[6,8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"44\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4|8[7-9]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]]]],\"PG\":[\"675\",\"00|140[1-3]\",\"(?:180|[78]\\\\d{3})\\\\d{4}|(?:[2-589]\\\\d|64)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"18|[2-69]|85\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[78]\"]]],0,0,0,0,0,0,0,\"00\"],\"PH\":[\"63\",\"00\",\"(?:[2-7]|9\\\\d)\\\\d{8}|2\\\\d{5}|(?:1800|8)\\\\d{7,9}\",[6,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"2\"],\"(0$1)\"],[\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2\",\"3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))\"],\"(0$1)\"],[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"346|4(?:27|9[35])|883\",\"3469|4(?:279|9(?:30|56))|8834\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-7]|8[2-8]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{4})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"1\"]]],\"0\"],\"PK\":[\"92\",\"00\",\"122\\\\d{6}|[24-8]\\\\d{10,11}|9(?:[013-9]\\\\d{8,10}|2(?:[01]\\\\d\\\\d|2(?:[06-8]\\\\d|1[01]))\\\\d{7})|(?:[2-8]\\\\d{3}|92(?:[0-7]\\\\d|8[1-9]))\\\\d{6}|[24-9]\\\\d{8}|[89]\\\\d{7}\",[8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{2,7})\",\"$1 $2 $3\",[\"[89]0\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"1\"]],[\"(\\\\d{3})(\\\\d{6,7})\",\"$1 $2\",[\"2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])\",\"9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{7,8})\",\"$1 $2\",[\"(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\"],\"(0$1)\"],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"58\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"3\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[24-9]\"],\"(0$1)\"]],\"0\"],\"PL\":[\"48\",\"00\",\"(?:6|8\\\\d\\\\d)\\\\d{7}|[1-9]\\\\d{6}(?:\\\\d{2})?|[26]\\\\d{5}\",[6,7,8,9,10],[[\"(\\\\d{5})\",\"$1\",[\"19\"]],[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"11|20|64\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"30|(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1\",\"30|(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"64\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"21|39|45|5[0137]|6[0469]|7[02389]|8(?:0[14]|8)\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[2-8]|[2-7]|8[1-79]|9[145]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"8\"]]]],\"PM\":[\"508\",\"00\",\"[78]\\\\d{8}|[2-9]\\\\d{5}\",[6,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"PR\":[\"1\",\"011\",\"(?:[589]\\\\d\\\\d|787)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"787|939\"],\"PS\":[\"970\",\"00\",\"[2489]2\\\\d{6}|(?:1\\\\d|5)\\\\d{8}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2489]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"PT\":[\"351\",\"00\",\"1693\\\\d{5}|(?:[26-9]\\\\d|30)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2[12]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"16|[236-9]\"]]]],\"PW\":[\"680\",\"01[12]\",\"(?:[24-8]\\\\d\\\\d|345|900)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]]],\"PY\":[\"595\",\"00\",\"[36-8]\\\\d{5,8}|4\\\\d{6,8}|59\\\\d{6}|9\\\\d{5,10}|(?:2\\\\d|5[0-8])\\\\d{6,7}\",[6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"[2-9]0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"3[289]|4[246-8]|61|7[1-3]|8[1-36]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{4,5})\",\"$1 $2\",[\"2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"87\"]],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"9(?:[5-79]|8[1-7])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"]]],\"0\"],\"QA\":[\"974\",\"00\",\"800\\\\d{4}|(?:2|800)\\\\d{6}|(?:0080|[3-7])\\\\d{7}\",[7,8,9,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"2[136]|8\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[3-7]\"]]]],\"RE\":[\"262\",\"00\",\"709\\\\d{6}|(?:26|[689]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[26-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"2631[0-6]\\\\d{4}|26(?:2\\\\d|30|88)\\\\d{5}\"],[\"(?:69(?:2\\\\d\\\\d|3(?:[06][0-6]|1[0-3]|2[0-2]|3[0-39]|4\\\\d|5[0-5]|7[0-37]|8[0-8]|9[0-479]))|7092[0-3])\\\\d{4}\"],[\"80\\\\d{7}\"],[\"89[1-37-9]\\\\d{6}\"],0,0,0,0,[\"9(?:399[0-3]|479[0-6]|76(?:2[278]|3[0-37]))\\\\d{4}\"],[\"8(?:1[019]|2[0156]|84|90)\\\\d{6}\"]]],\"RO\":[\"40\",\"00\",\"(?:[236-8]\\\\d|90)\\\\d{7}|[23]\\\\d{5}\",[6,9],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"2[3-6]\",\"2[3-6]\\\\d9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"219|31\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[23]1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[236-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,0,0,\" int \"],\"RS\":[\"381\",\"00\",\"38[02-9]\\\\d{6,9}|6\\\\d{7,9}|90\\\\d{4,8}|38\\\\d{5,6}|(?:7\\\\d\\\\d|800)\\\\d{3,9}|(?:[12]\\\\d|3[0-79])\\\\d{5,10}\",[6,7,8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3,9})\",\"$1 $2\",[\"(?:2[389]|39)0|[7-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5,10})\",\"$1 $2\",[\"[1-36]\"],\"0$1\"]],\"0\"],\"RU\":[\"7\",\"810\",\"8\\\\d{13}|[347-9]\\\\d{9}\",[10,14],[[\"(\\\\d{4})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-8]|2[1-9])\",\"7(?:1(?:[0-356]2|4[29]|7|8[27])|2(?:1[23]|[2-9]2))\",\"7(?:1(?:[0-356]2|4[29]|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2\"],\"8 ($1)\",1],[\"(\\\\d{5})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-68]|2[1-9])\",\"7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))\",\"7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]\"],\"8 ($1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"8 ($1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[349]|8(?:[02-7]|1[1-8])\"],\"8 ($1)\",1],[\"(\\\\d{4})(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"8\"],\"8 ($1)\"]],\"8\",0,0,0,0,\"[3489]\",0,\"8~10\"],\"RW\":[\"250\",\"00\",\"(?:06|[27]\\\\d\\\\d|[89]00)\\\\d{6}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"]],\"0\"],\"SA\":[\"966\",\"00\",\"(?:[15]\\\\d|800|92)\\\\d{7}\",[9,10],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"9\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],\"0\"],\"SB\":[\"677\",\"0[01]\",\"[6-9]\\\\d{6}|[1-6]\\\\d{4}\",[5,7],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"6[89]|7|8[4-9]|9(?:[1-8]|9[0-8])\"]]]],\"SC\":[\"248\",\"010|0[0-2]\",\"(?:[2489]\\\\d|64)\\\\d{5}\",[7],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[246]|9[57]\"]]],0,0,0,0,0,0,0,\"00\"],\"SD\":[\"249\",\"00\",\"[19]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],\"0\"],\"SE\":[\"46\",\"00\",\"(?:[26]\\\\d\\\\d|9)\\\\d{9}|[1-9]\\\\d{8}|[1-689]\\\\d{7}|[1-4689]\\\\d{6}|2\\\\d{5}\",[6,7,8,9,10,12],[[\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"20\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"9(?:00|39|44|9)\"],\"0$1\",0,\"$1 $2\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3\",[\"[12][136]|3[356]|4[0246]|6[03]|90[1-9]\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d)(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{3})\",\"$1-$2 $3\",[\"9(?:00|39|44)\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"10|7\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1-$2 $3 $4\",[\"9\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4 $5\",[\"[26]\"],\"0$1\",0,\"$1 $2 $3 $4 $5\"]],\"0\"],\"SG\":[\"65\",\"0[0-3]\\\\d\",\"(?:(?:1\\\\d|8)\\\\d\\\\d|7000)\\\\d{7}|[3689]\\\\d{7}\",[8,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[369]|8(?:0[1-9]|[1-9])\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{4})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]]],\"SH\":[\"290\",\"00\",\"(?:[256]\\\\d|8)\\\\d{3}\",[4,5],0,0,0,0,0,0,\"[256]\"],\"SI\":[\"386\",\"00|10(?:22|66|88|99)\",\"[1-7]\\\\d{7}|8\\\\d{4,7}|90\\\\d{4,6}\",[5,6,7,8],[[\"(\\\\d{2})(\\\\d{3,6})\",\"$1 $2\",[\"8[09]|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"59|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37][01]|4[013]|51|6\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-57]\"],\"(0$1)\"]],\"0\",0,0,0,0,0,0,\"00\"],\"SJ\":[\"47\",\"00\",\"0\\\\d{4}|(?:[489]\\\\d|79)\\\\d{6}\",[5,8],0,0,0,0,0,0,\"79\"],\"SK\":[\"421\",\"00\",\"[2-689]\\\\d{8}|[2-59]\\\\d{6}|[2-5]\\\\d{5}\",[6,7,9],[[\"(\\\\d)(\\\\d{2})(\\\\d{3,4})\",\"$1 $2 $3\",[\"21\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[3-5][1-8]1\",\"[3-5][1-8]1[67]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[689]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[3-5]\"],\"0$1\"]],\"0\"],\"SL\":[\"232\",\"00\",\"(?:[237-9]\\\\d|66)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[236-9]\"],\"(0$1)\"]],\"0\"],\"SM\":[\"378\",\"00\",\"(?:0549|[5-7]\\\\d)\\\\d{6}\",[8,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-7]\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"0\"]]],0,0,\"([89]\\\\d{5})$\",\"0549$1\"],\"SN\":[\"221\",\"00\",\"(?:[378]\\\\d|93)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[379]\"]]]],\"SO\":[\"252\",\"00\",\"[346-9]\\\\d{8}|[12679]\\\\d{7}|[1-5]\\\\d{6}|[1348]\\\\d{5}\",[6,7,8,9],[[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"8[125]\"]],[\"(\\\\d{6})\",\"$1\",[\"[134]\"]],[\"(\\\\d)(\\\\d{6})\",\"$1 $2\",[\"[15]|2[0-79]|3[0-46-8]|4[0-7]\"]],[\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"1|28|9[2-9]\"]],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[267]|904\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[346-9]\"]]],\"0\"],\"SR\":[\"597\",\"00\",\"(?:[2-5]|[6-9]\\\\d)\\\\d{5}\",[6,7],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"56\"]],[\"(\\\\d{3})(\\\\d{3})\",\"$1-$2\",[\"[2-5]\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[6-9]\"]]]],\"SS\":[\"211\",\"00\",\"[19]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],\"0\"],\"ST\":[\"239\",\"00\",\"(?:22|9\\\\d)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[29]\"]]]],\"SV\":[\"503\",\"00\",\"[25-7]\\\\d{7}|(?:80\\\\d|900)\\\\d{4}(?:\\\\d{4})?\",[7,8,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[89]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[25-7]\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]]],\"SX\":[\"1\",\"011\",\"7215\\\\d{6}|(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"(5\\\\d{6})$|1\",\"721$1\",0,\"721\"],\"SY\":[\"963\",\"00\",\"[1-359]\\\\d{8}|[1-5]\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-4]|5[1-3]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[59]\"],\"0$1\",1]],\"0\"],\"SZ\":[\"268\",\"00\",\"0800\\\\d{4}|(?:[237]\\\\d|900)\\\\d{6}\",[8,9],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[0237]\"]],[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"9\"]]]],\"TA\":[\"290\",\"00\",\"8\\\\d{3}\",[4],0,0,0,0,0,0,\"8\"],\"TC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|649|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-479]\\\\d{6})$|1\",\"649$1\",0,\"649\"],\"TD\":[\"235\",\"00|16\",\"(?:22|[3689]\\\\d|77)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[236-9]\"]]],0,0,0,0,0,0,0,\"00\"],\"TG\":[\"228\",\"00\",\"[279]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[279]\"]]]],\"TH\":[\"66\",\"00[1-9]\",\"(?:001800|[2-57]|[689]\\\\d)\\\\d{7}|1\\\\d{7,9}\",[8,9,10,13],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[13-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"TJ\":[\"992\",\"810\",\"(?:[0-57-9]\\\\d|66)\\\\d{7}\",[9],[[\"(\\\\d{6})(\\\\d)(\\\\d{2})\",\"$1 $2 $3\",[\"331\",\"3317\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"44[02-479]|[34]7\"]],[\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:[1245]|3[12])\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"\\\\d\"]]],0,0,0,0,0,0,0,\"8~10\"],\"TK\":[\"690\",\"00\",\"[2-47]\\\\d{3,6}\",[4,5,6,7]],\"TL\":[\"670\",\"00\",\"7\\\\d{7}|(?:[2-47]\\\\d|[89]0)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-489]|70\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"7\"]]]],\"TM\":[\"993\",\"810\",\"[1-7]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"12\"],\"(8 $1)\"],[\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-5]\"],\"(8 $1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[67]\"],\"8 $1\"]],\"8\",0,0,0,0,0,0,\"8~10\"],\"TN\":[\"216\",\"00\",\"[2-57-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-57-9]\"]]]],\"TO\":[\"676\",\"00\",\"(?:0800|(?:[5-8]\\\\d\\\\d|999)\\\\d)\\\\d{3}|[2-8]\\\\d{4}\",[5,7],[[\"(\\\\d{2})(\\\\d{3})\",\"$1-$2\",[\"[2-4]|50|6[09]|7[0-24-69]|8[05]\"]],[\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[5-9]\"]]]],\"TR\":[\"90\",\"00\",\"4\\\\d{6}|8\\\\d{11,12}|(?:[2-58]\\\\d\\\\d|900)\\\\d{7}\",[7,10,12,13],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"512|8[01589]|90\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5[0-79]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24][1-8]|3[1-9]\"],\"(0$1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{6,7})\",\"$1 $2 $3\",[\"80\"],\"0$1\",1]],\"0\"],\"TT\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-46-8]\\\\d{6})$|1\",\"868$1\",0,\"868\"],\"TV\":[\"688\",\"00\",\"(?:2|7\\\\d\\\\d|90)\\\\d{4}\",[5,6,7],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2\"]],[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"90\"]],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]]],\"TW\":[\"886\",\"0(?:0[25-79]|19)\",\"[2-689]\\\\d{8}|7\\\\d{9,10}|[2-8]\\\\d{7}|2\\\\d{6}\",[7,8,9,10,11],[[\"(\\\\d{2})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"202\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"826\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"83\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"82\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[25]0|37|49|8[09]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[23568]|4(?:0[02-48]|[1-478])|7[1-9]\",\"[23568]|4(?:0[2-48]|[1-478])|(?:400|7)[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\",0,0,0,0,0,0,0,\"#\"],\"TZ\":[\"255\",\"00[056]\",\"(?:[25-8]\\\\d|41|90)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[24]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[67]\"],\"0$1\"]],\"0\"],\"UA\":[\"380\",\"00\",\"[89]\\\\d{9}|[3-9]\\\\d{8}\",[9,10],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]\",\"6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6[0135689]|7[4-6])|6(?:[12][3-7]|[459])\",\"3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6(?:[015689]|3[02389])|7[4-6])|6(?:[12][3-7]|[459])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-7]|89|9[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\",0,0,0,0,0,0,\"0~0\"],\"UG\":[\"256\",\"00[057]\",\"800\\\\d{6}|(?:[29]0|[347]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"202\",\"2024\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[27-9]|4(?:6[45]|[7-9])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[34]\"],\"0$1\"]],\"0\"],\"US\":[\"1\",\"011\",\"[2-9]\\\\d{9}|3\\\\d{6}\",[10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"310\"],0,1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"($1) $2-$3\",[\"[2-9]\"],0,1,\"$1-$2-$3\"]],\"1\",0,0,0,0,0,[[\"(?:472[2-47-9]|983[2-57-9])\\\\d{6}|(?:2(?:0[1-35-9]|1[02-9]|2[03-57-9]|3[1459]|4[08]|5[1-46]|6[0279]|7[02469]|8[13])|3(?:0[1-57-9]|1[02-9]|2[013-79]|3[0-24679]|4[167]|5[0-3]|6[01349]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[349]|7[0589]|8[04])|5(?:0[1-57-9]|1[0235-8]|20|3[0149]|4[01]|5[179]|6[1-47]|7[0-5]|8[0256])|6(?:0[1-35-9]|1[024-9]|2[03689]|3[016]|4[0156]|5[01679]|6[0-279]|78|8[0-269])|7(?:0[1-46-8]|1[2-9]|2[04-8]|3[0-2478]|4[0378]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[0168]|3[0-2589]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01357-9]|5[12469]|7[0-3589]|8[04-69]))[2-9]\\\\d{6}\"],[\"\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-9]|3[23]|44|66|77|88)[2-9]\\\\d{6}\"]]],\"UY\":[\"598\",\"0(?:0|1[3-9]\\\\d)\",\"0004\\\\d{2,9}|[1249]\\\\d{7}|2\\\\d{3,4}|(?:[49]\\\\d|80)\\\\d{5}\",[4,5,6,7,8,9,10,11,12,13],[[\"(\\\\d{4,5})\",\"$1\",[\"21\"]],[\"(\\\\d{3})(\\\\d{3,4})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[49]0|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[124]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3 $4\",[\"0\"]]],\"0\",0,0,0,0,0,0,\"00\",\" int. \"],\"UZ\":[\"998\",\"00\",\"(?:20|33|[5-9]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[235-9]\"]]]],\"VA\":[\"39\",\"00\",\"0\\\\d{5,10}|3[0-8]\\\\d{7,10}|55\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?|(?:1\\\\d|39)\\\\d{7,8}\",[6,7,8,9,10,11,12],0,0,0,0,0,0,\"06698\"],\"VC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|784|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-7]\\\\d{6})$|1\",\"784$1\",0,\"784\"],\"VE\":[\"58\",\"00\",\"[68]00\\\\d{7}|(?:[24]\\\\d|[59]0)\\\\d{8}\",[10],[[\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"[24-689]\"],\"0$1\"]],\"0\"],\"VG\":[\"1\",\"011\",\"(?:284|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-578]\\\\d{6})$|1\",\"284$1\",0,\"284\"],\"VI\":[\"1\",\"011\",\"[58]\\\\d{9}|(?:34|90)0\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"340$1\",0,\"340\"],\"VN\":[\"84\",\"00\",\"[12]\\\\d{9}|[135-9]\\\\d{8}|[16]\\\\d{6,7}|7\\\\d{6}\",[7,8,9,10],[[\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"1(?:2[02]|[89])\"],0,1],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[26]|6\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[357-9]\"],\"0$1\",1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[48]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\",1]],\"0\"],\"VU\":[\"678\",\"00\",\"[57-9]\\\\d{6}|(?:[238]\\\\d|48)\\\\d{3}\",[5,7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[57-9]\"]]]],\"WF\":[\"681\",\"00\",\"(?:40|72|8\\\\d{4})\\\\d{4}|[89]\\\\d{5}\",[6,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[47-9]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]]]],\"WS\":[\"685\",\"0\",\"(?:[2-6]|8\\\\d{5})\\\\d{4}|[78]\\\\d{6}|[68]\\\\d{5}\",[5,6,7,10],[[\"(\\\\d{5})\",\"$1\",[\"[2-5]|6[1-9]\"]],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"[68]\"]],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]]],\"XK\":[\"383\",\"00\",\"2\\\\d{7,8}|3\\\\d{7,11}|(?:4\\\\d\\\\d|[89]00)\\\\d{5}\",[8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-4]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2|39\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7,10})\",\"$1 $2\",[\"3\"],\"0$1\"]],\"0\"],\"YE\":[\"967\",\"00\",\"(?:1|7\\\\d)\\\\d{7}|[1-7]\\\\d{6}\",[7,8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-6]|7(?:[24-6]|8[0-7])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\"],\"YT\":[\"262\",\"00\",\"(?:639\\\\d|7093)\\\\d{5}|(?:26|80|9\\\\d)\\\\d{7}\",[9],0,\"0\",0,0,0,0,0,[[\"26(?:89\\\\d|9(?:0[0-467]|15|5[0-4]|6\\\\d|[78]0))\\\\d{4}\"],[\"(?:639(?:0[0-79]|1[019]|[267]\\\\d|3[09]|40|5[05-9]|9[04-79])|7093[5-7])\\\\d{4}\"],[\"80\\\\d{7}\"],0,0,0,0,0,[\"9(?:(?:39|47)8[01]|769\\\\d)\\\\d{4}\"]]],\"ZA\":[\"27\",\"00\",\"[1-79]\\\\d{8}|8\\\\d{4,9}\",[5,6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"8[1-4]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8[1-4]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"860\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],\"ZM\":[\"260\",\"00\",\"800\\\\d{6}|(?:21|[579]\\\\d|63)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[28]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[579]\"],\"0$1\"]],\"0\"],\"ZW\":[\"263\",\"00\",\"2(?:[0-57-9]\\\\d{6,8}|6[0-24-9]\\\\d{6,7})|[38]\\\\d{9}|[35-8]\\\\d{8}|[3-6]\\\\d{7}|[1-689]\\\\d{6}|[1-3569]\\\\d{5}|[1356]\\\\d{4}\",[5,6,7,8,9,10],[[\"(\\\\d{3})(\\\\d{3,5})\",\"$1 $2\",[\"2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"80\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2\",\"2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)\",\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"29[013-9]|39|54\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,5})\",\"$1 $2\",[\"(?:25|54)8\",\"258|5483\"],\"0$1\"]],\"0\"]},\"nonGeographic\":{\"800\":[\"800\",0,\"(?:00|[1-9]\\\\d)\\\\d{6}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"\\\\d\"]]],0,0,0,0,0,0,[0,0,[\"(?:00|[1-9]\\\\d)\\\\d{6}\"]]],\"808\":[\"808\",0,\"[1-9]\\\\d{7}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[1-9]\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,0,[\"[1-9]\\\\d{7}\"]]],\"870\":[\"870\",0,\"7\\\\d{11}|[235-7]\\\\d{8}\",[9,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235-7]\"]]],0,0,0,0,0,0,[0,[\"(?:[356]|774[45])\\\\d{8}|7[6-8]\\\\d{7}\"],0,0,0,0,0,0,[\"2\\\\d{8}\",[9]]]],\"878\":[\"878\",0,\"10\\\\d{10}\",[12],[[\"(\\\\d{2})(\\\\d{5})(\\\\d{5})\",\"$1 $2 $3\",[\"1\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,[\"10\\\\d{10}\"]]],\"881\":[\"881\",0,\"6\\\\d{9}|[0-36-9]\\\\d{8}\",[9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\",[\"[0-37-9]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{5,6})\",\"$1 $2 $3\",[\"6\"]]],0,0,0,0,0,0,[0,[\"6\\\\d{9}|[0-36-9]\\\\d{8}\"]]],\"882\":[\"882\",0,\"[13]\\\\d{6}(?:\\\\d{2,5})?|[19]\\\\d{7}|(?:[25]\\\\d\\\\d|4)\\\\d{7}(?:\\\\d{2})?\",[7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"16|342\"]],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"49\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"1[36]|9\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"3[23]\"]],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"16\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"10|23|3(?:[15]|4[57])|4|5[12]\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"34\"]],[\"(\\\\d{2})(\\\\d{4,5})(\\\\d{5})\",\"$1 $2 $3\",[\"[1-35]\"]]],0,0,0,0,0,0,[0,[\"342\\\\d{4}|(?:337|49)\\\\d{6}|(?:3(?:2|47|7\\\\d{3})|5(?:0\\\\d{3}|2[0-2]))\\\\d{7}\",[7,8,9,10,12]],0,0,0,[\"348[57]\\\\d{7}\",[11]],0,0,[\"1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\\\d{4}|6\\\\d{5,10})|(?:345\\\\d|9[89])\\\\d{6}|(?:10|2(?:3|85\\\\d)|3(?:[15]|[69]\\\\d\\\\d)|4[15-8]|51)\\\\d{8}\"]]],\"883\":[\"883\",0,\"(?:[1-4]\\\\d|51)\\\\d{6,10}\",[8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{2,8})\",\"$1 $2 $3\",[\"[14]|2[24-689]|3[02-689]|51[24-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"510\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"21\"]],[\"(\\\\d{4})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"51[13]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[235]\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,[\"(?:2(?:00\\\\d\\\\d|10)|(?:370[1-9]|51\\\\d0)\\\\d)\\\\d{7}|51(?:00\\\\d{5}|[24-9]0\\\\d{4,7})|(?:1[0-79]|2[24-689]|3[02-689]|4[0-4])0\\\\d{5,9}\"]]],\"888\":[\"888\",0,\"\\\\d{11}\",[11],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\"]],0,0,0,0,0,0,[0,0,0,0,0,0,[\"\\\\d{11}\"]]],\"979\":[\"979\",0,\"[1359]\\\\d{8}\",[9],[[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1359]\"]]],0,0,0,0,0,0,[0,0,0,[\"[1359]\\\\d{8}\"]]]}}","// Importing from a \".js\" file is a workaround for Node.js \"ES Modules\"\n// importing system which is even uncapable of importing \"*.json\" files.\nimport metadata from '../../metadata.min.json.js'\n\nexport default function withMetadataArgument(func, _arguments) {\n\tvar args = Array.prototype.slice.call(_arguments)\n\targs.push(metadata)\n\treturn func.apply(this, args)\n}","// Copy-pasted from:\n// https://github.com/substack/semver-compare/blob/master/index.js\n//\n// Inlining this function because some users reported issues with\n// importing from `semver-compare` in a browser with ES6 \"native\" modules.\n//\n// Fixes `semver-compare` not being able to compare versions with alpha/beta/etc \"tags\".\n// https://github.com/catamphetamine/libphonenumber-js/issues/381\nexport default function(a, b) {\n    a = a.split('-')\n    b = b.split('-')\n    var pa = a[0].split('.')\n    var pb = b[0].split('.')\n    for (var i = 0; i \u003c 3; i++) {\n        var na = Number(pa[i])\n        var nb = Number(pb[i])\n        if (na \u003e nb) return 1\n        if (nb \u003e na) return -1\n        if (!isNaN(na) \u0026\u0026 isNaN(nb)) return 1\n        if (isNaN(na) \u0026\u0026 !isNaN(nb)) return -1\n    }\n    if (a[1] \u0026\u0026 b[1]) {\n        return a[1] \u003e b[1] ? 1 : (a[1] \u003c b[1] ? -1 : 0)\n    }\n    return !a[1] \u0026\u0026 b[1] ? 1 : (a[1] \u0026\u0026 !b[1] ? -1 : 0)\n}","const objectConstructor = {}.constructor;\n\nexport default function isObject(object) {\n  return object !== undefined \u0026\u0026 object !== null \u0026\u0026 object.constructor === objectConstructor;\n}\n","const CALLING_CODE_REG_EXP = /^\\d+$/\n\nexport default function isCallingCode(string) {\n\treturn CALLING_CODE_REG_EXP.test(string)\n}\n","import compare from './tools/semver-compare.js'\nimport isObject from './helpers/isObject.js'\nimport isCallingCode from './helpers/isCallingCode.js'\n\n// Added \"possibleLengths\" and renamed\n// \"country_phone_code_to_countries\" to \"country_calling_codes\".\nconst V2 = '1.0.18'\n\n// Added \"idd_prefix\" and \"default_idd_prefix\".\nconst V3 = '1.2.0'\n\n// Moved `001` country code to \"nonGeographic\" section of metadata.\nconst V4 = '1.7.35'\n\nconst DEFAULT_EXT_PREFIX = ' ext. '\n\n/**\n * See: https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md\n */\nexport default class Metadata {\n\t/**\n\t * @param {object} metadata — Metadata JSON.\n\t */\n\tconstructor(metadata) {\n\t\tvalidateMetadata(metadata)\n\t\tthis.metadata = metadata\n\t\tsetVersion.call(this, metadata)\n\t}\n\n\tgetCountries() {\n\t\treturn Object.keys(this.metadata.countries).filter(_ =\u003e _ !== '001')\n\t}\n\n\tgetCountryMetadata(countryCode) {\n\t\treturn this.metadata.countries[countryCode]\n\t}\n\n\tnonGeographic() {\n\t\tif (this.v1 || this.v2 || this.v3) return\n\t\t// `nonGeographical` was a typo.\n\t\t// It's present in metadata generated from `1.7.35` to `1.7.37`.\n\t\t// The test case could be found by searching for \"nonGeographical\".\n\t\treturn this.metadata.nonGeographic || this.metadata.nonGeographical\n\t}\n\n\thasCountry(country) {\n\t\treturn this.getCountryMetadata(country) !== undefined\n\t}\n\n\thasCallingCode(callingCode) {\n\t\tif (this.getCountryCodesForCallingCode(callingCode)) {\n\t\t\treturn true\n\t\t}\n\t\tif (this.nonGeographic()) {\n\t\t\tif (this.nonGeographic()[callingCode]) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t} else {\n\t\t\t// A hacky workaround for old custom metadata (generated before V4).\n\t\t\tconst countryCodes = this.countryCallingCodes()[callingCode]\n\t\t\tif (countryCodes \u0026\u0026 countryCodes.length === 1 \u0026\u0026 countryCodes[0] === '001') {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t}\n\n\tisNonGeographicCallingCode(callingCode) {\n\t\tif (this.nonGeographic()) {\n\t\t\treturn this.nonGeographic()[callingCode] ? true : false\n\t\t} else {\n\t\t\treturn this.getCountryCodesForCallingCode(callingCode) ? false : true\n\t\t}\n\t}\n\n\t// Deprecated.\n\tcountry(countryCode) {\n\t\treturn this.selectNumberingPlan(countryCode)\n\t}\n\n\t/**\n\t * Selects a telephone numbering plan based on either a country code or a calling code.\n\t * @param {string} argument — Country code or calling code.\n\t * @param {string} legacyArgumentCallingCode — Legacy argument: calling code, if the first argument is not passed.\n\t */\n\tselectNumberingPlan(argument, legacyArgumentCallingCode) {\n\t\tlet countryCode\n\t\tlet callingCode\n\t\tif (argument) {\n\t\t\tif (isCallingCode(argument)) {\n\t\t\t\tcallingCode = argument\n\t\t\t} else {\n\t\t\t\tcountryCode = argument\n\t\t\t}\n\t\t}\n\t\t// Previously, the signature of this method was: `.selectNumberingPlan(country, callingCode)`.\n\t\t// And if `country` argument wasn't passed, it looked into the second argument `callingCode`.\n\t\t// Now it's preferred to only pass either `country` or `callingCode` as the first argument.\n\t\tif (legacyArgumentCallingCode) {\n\t\t\tcallingCode = legacyArgumentCallingCode\n\t\t}\n\n\t\t// Select a telephone numbering plan.\n\t\tif (countryCode \u0026\u0026 countryCode !== '001') {\n\t\t\tconst countryMetadata = this.getCountryMetadata(countryCode)\n\t\t\tif (!countryMetadata) {\n\t\t\t\tthrow new Error(`Unknown country: ${countryCode}`)\n\t\t\t}\n\t\t\tthis.numberingPlan = new NumberingPlan(countryMetadata, this)\n\t\t} else if (callingCode) {\n\t\t\tif (!this.hasCallingCode(callingCode)) {\n\t\t\t\tthrow new Error(`Unknown calling code: ${callingCode}`)\n\t\t\t}\n\t\t\tthis.numberingPlan = new NumberingPlan(this.getNumberingPlanMetadata(callingCode), this)\n\t\t} else {\n\t\t\tthis.numberingPlan = undefined\n\t\t}\n\n\t\treturn this\n\t}\n\n\tgetCountryCodesForCallingCode(callingCode) {\n\t\tconst countryCodes = this.countryCallingCodes()[callingCode]\n\t\tif (countryCodes) {\n\t\t\t// Metadata before V4 included \"non-geographic entity\" calling codes\n\t\t\t// inside `country_calling_codes` (for example, `\"881\":[\"001\"]`).\n\t\t\t// Now the semantics of `country_calling_codes` has changed:\n\t\t\t// it's specifically for \"countries\" now.\n\t\t\t// Older versions of custom metadata will simply skip parsing\n\t\t\t// \"non-geographic entity\" phone numbers with new versions\n\t\t\t// of this library: it's not considered a bug,\n\t\t\t// because such numbers are extremely rare,\n\t\t\t// and developers extremely rarely use custom metadata.\n\t\t\tif (countryCodes.length === 1 \u0026\u0026 countryCodes[0].length === 3) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\treturn countryCodes\n\t\t}\n\t}\n\n\tgetCountryCodeForCallingCode(callingCode) {\n\t\tconst countryCodes = this.getCountryCodesForCallingCode(callingCode)\n\t\tif (countryCodes) {\n\t\t\treturn countryCodes[0]\n\t\t}\n\t}\n\n\tgetNumberingPlanMetadata(callingCode) {\n\t\t// If a calling code is specified, choose the telephone numbering plan\n\t\t// of the \"default\" country for this calling code.\n\t\t// For example, if calling code `1` is passed,\n\t\t// the telephone numbering plan of `US` will be selected.\n\t\tconst countryCode = this.getCountryCodeForCallingCode(callingCode)\n\t\tif (countryCode) {\n\t\t\treturn this.getCountryMetadata(countryCode)\n\t\t}\n\t\tif (this.nonGeographic()) {\n\t\t\tconst metadata = this.nonGeographic()[callingCode]\n\t\t\tif (metadata) {\n\t\t\t\treturn metadata\n\t\t\t}\n\t\t} else {\n\t\t\t// A hacky workaround for old custom metadata (generated before V4).\n\t\t\t// In that metadata, there was no concept of \"non-geographic\" metadata\n\t\t\t// so metadata for `001` country code was stored along with other countries.\n\t\t\t// The test case can be found by searching for:\n\t\t\t// \"should work around `nonGeographic` metadata not existing\".\n\t\t\tconst countryCodes = this.countryCallingCodes()[callingCode]\n\t\t\tif (countryCodes \u0026\u0026 countryCodes.length === 1 \u0026\u0026 countryCodes[0] === '001') {\n\t\t\t\treturn this.metadata.countries['001']\n\t\t\t}\n\t\t}\n\t}\n\n\t// Deprecated.\n\tcountryCallingCode() {\n\t\treturn this.numberingPlan.callingCode()\n\t}\n\n\t// Deprecated.\n\tIDDPrefix() {\n\t\treturn this.numberingPlan.IDDPrefix()\n\t}\n\n\t// Deprecated.\n\tdefaultIDDPrefix() {\n\t\treturn this.numberingPlan.defaultIDDPrefix()\n\t}\n\n\t// Deprecated.\n\tnationalNumberPattern() {\n\t\treturn this.numberingPlan.nationalNumberPattern()\n\t}\n\n\t// Deprecated.\n\tpossibleLengths() {\n\t\treturn this.numberingPlan.possibleLengths()\n\t}\n\n\t// Deprecated.\n\tformats() {\n\t\treturn this.numberingPlan.formats()\n\t}\n\n\t// Deprecated.\n\tnationalPrefixForParsing() {\n\t\treturn this.numberingPlan.nationalPrefixForParsing()\n\t}\n\n\t// Deprecated.\n\tnationalPrefixTransformRule() {\n\t\treturn this.numberingPlan.nationalPrefixTransformRule()\n\t}\n\n\t// Deprecated.\n\tleadingDigits() {\n\t\treturn this.numberingPlan.leadingDigits()\n\t}\n\n\t// Deprecated.\n\thasTypes() {\n\t\treturn this.numberingPlan.hasTypes()\n\t}\n\n\t// Deprecated.\n\ttype(type) {\n\t\treturn this.numberingPlan.type(type)\n\t}\n\n\t// Deprecated.\n\text() {\n\t\treturn this.numberingPlan.ext()\n\t}\n\n\tcountryCallingCodes() {\n\t\tif (this.v1) return this.metadata.country_phone_code_to_countries\n\t\treturn this.metadata.country_calling_codes\n\t}\n\n\t// Deprecated.\n\tchooseCountryByCountryCallingCode(callingCode) {\n\t\treturn this.selectNumberingPlan(callingCode)\n\t}\n\n\thasSelectedNumberingPlan() {\n\t\treturn this.numberingPlan !== undefined\n\t}\n}\n\nclass NumberingPlan {\n\tconstructor(metadata, globalMetadataObject) {\n\t\tthis.globalMetadataObject = globalMetadataObject\n\t\tthis.metadata = metadata\n\t\tsetVersion.call(this, globalMetadataObject.metadata)\n\t}\n\n\tcallingCode() {\n\t\treturn this.metadata[0]\n\t}\n\n\t// When multiple countries share the same calling code,\n\t// all phone number formatting rules are included in the metadata\n\t// of the \"default\" country for that calling code.\n\t// Any other countries' metdata doesn't include any formatting rules.\n\t// Google developers said that such storage architecture was chosen for performance reasons.\n\t//\n\t// For example, for NANPA region (\"North American Numbering Plan Administration\",\n\t// which includes USA, Canada, Cayman Islands, Bahamas, etc) all formatting rules\n\t// are contained in the metadata of `US` country.\n\t//\n\t// This is not public API.\n\t//\n\t_getDefaultCountryMetadataForThisCallingCode() {\n\t\treturn this.globalMetadataObject.getNumberingPlanMetadata(this.callingCode())\n\t}\n\n\t// Deprecated.\n\tgetDefaultCountryMetadataForRegion() {\n\t\treturn this._getDefaultCountryMetadataForThisCallingCode()\n\t}\n\n\t// Is always present.\n\tIDDPrefix() {\n\t\tif (this.v1 || this.v2) return\n\t\treturn this.metadata[1]\n\t}\n\n\t// Is only present when a country supports multiple IDD prefixes.\n\tdefaultIDDPrefix() {\n\t\tif (this.v1 || this.v2) return\n\t\treturn this.metadata[12]\n\t}\n\n\tnationalNumberPattern() {\n\t\tif (this.v1 || this.v2) return this.metadata[1]\n\t\treturn this.metadata[2]\n\t}\n\n\t// \"possible length\" data is always present in Google's metadata.\n\tpossibleLengths() {\n\t\tif (this.v1) return\n\t\treturn this.metadata[this.v2 ? 2 : 3]\n\t}\n\n\t_getFormats(metadata) {\n\t\treturn metadata[this.v1 ? 2 : this.v2 ? 3 : 4]\n\t}\n\n\t// For countries of the same region (e.g. NANPA)\n\t// formats are all stored in the \"main\" country for that region.\n\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\tformats() {\n\t\tconst formats = this._getFormats(this.metadata) || this._getFormats(this._getDefaultCountryMetadataForThisCallingCode()) || []\n\t\treturn formats.map(_ =\u003e new Format(_, this))\n\t}\n\n\tnationalPrefix() {\n\t\treturn this.metadata[this.v1 ? 3 : this.v2 ? 4 : 5]\n\t}\n\n\t_getNationalPrefixFormattingRule(metadata) {\n\t\treturn metadata[this.v1 ? 4 : this.v2 ? 5 : 6]\n\t}\n\n\t// For countries of the same region (e.g. NANPA)\n\t// national prefix formatting rule is stored in the \"main\" country for that region.\n\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\tnationalPrefixFormattingRule() {\n\t\treturn this._getNationalPrefixFormattingRule(this.metadata) || this._getNationalPrefixFormattingRule(this._getDefaultCountryMetadataForThisCallingCode())\n\t}\n\n\t_nationalPrefixForParsing() {\n\t\treturn this.metadata[this.v1 ? 5 : this.v2 ? 6 : 7]\n\t}\n\n\tnationalPrefixForParsing() {\n\t\t// If `national_prefix_for_parsing` is not set explicitly,\n\t\t// then infer it from `national_prefix` (if any)\n\t\treturn this._nationalPrefixForParsing() || this.nationalPrefix()\n\t}\n\n\tnationalPrefixTransformRule() {\n\t\treturn this.metadata[this.v1 ? 6 : this.v2 ? 7 : 8]\n\t}\n\n\t_getNationalPrefixIsOptionalWhenFormatting() {\n\t\treturn !!this.metadata[this.v1 ? 7 : this.v2 ? 8 : 9]\n\t}\n\n\t// For countries of the same region (e.g. NANPA)\n\t// \"national prefix is optional when formatting\" flag is\n\t// stored in the \"main\" country for that region.\n\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\tnationalPrefixIsOptionalWhenFormattingInNationalFormat() {\n\t\treturn this._getNationalPrefixIsOptionalWhenFormatting(this.metadata) ||\n\t\t\tthis._getNationalPrefixIsOptionalWhenFormatting(this._getDefaultCountryMetadataForThisCallingCode())\n\t}\n\n\tleadingDigits() {\n\t\treturn this.metadata[this.v1 ? 8 : this.v2 ? 9 : 10]\n\t}\n\n\ttypes() {\n\t\treturn this.metadata[this.v1 ? 9 : this.v2 ? 10 : 11]\n\t}\n\n\thasTypes() {\n\t\t// Versions 1.2.0 - 1.2.4: can be `[]`.\n\t\t/* istanbul ignore next */\n\t\tif (this.types() \u0026\u0026 this.types().length === 0) {\n\t\t\treturn false\n\t\t}\n\t\t// Versions \u003c= 1.2.4: can be `undefined`.\n\t\t// Version \u003e= 1.2.5: can be `0`.\n\t\treturn !!this.types()\n\t}\n\n\ttype(type) {\n\t\tif (this.hasTypes() \u0026\u0026 getType(this.types(), type)) {\n\t\t\treturn new Type(getType(this.types(), type), this)\n\t\t}\n\t}\n\n\text() {\n\t\tif (this.v1 || this.v2) return DEFAULT_EXT_PREFIX\n\t\treturn this.metadata[13] || DEFAULT_EXT_PREFIX\n\t}\n}\n\nclass Format {\n\tconstructor(format, metadata) {\n\t\tthis._format = format\n\t\tthis.metadata = metadata\n\t}\n\n\tpattern() {\n\t\treturn this._format[0]\n\t}\n\n\tformat() {\n\t\treturn this._format[1]\n\t}\n\n\tleadingDigitsPatterns() {\n\t\treturn this._format[2] || []\n\t}\n\n\tnationalPrefixFormattingRule() {\n\t\treturn this._format[3] || this.metadata.nationalPrefixFormattingRule()\n\t}\n\n\tnationalPrefixIsOptionalWhenFormattingInNationalFormat() {\n\t\treturn !!this._format[4] || this.metadata.nationalPrefixIsOptionalWhenFormattingInNationalFormat()\n\t}\n\n\tnationalPrefixIsMandatoryWhenFormattingInNationalFormat() {\n\t\t// National prefix is omitted if there's no national prefix formatting rule\n\t\t// set for this country, or when the national prefix formatting rule\n\t\t// contains no national prefix itself, or when this rule is set but\n\t\t// national prefix is optional for this phone number format\n\t\t// (and it is not enforced explicitly)\n\t\treturn this.usesNationalPrefix() \u0026\u0026 !this.nationalPrefixIsOptionalWhenFormattingInNationalFormat()\n\t}\n\n\t// Checks whether national prefix formatting rule contains national prefix.\n\tusesNationalPrefix() {\n\t\treturn this.nationalPrefixFormattingRule() \u0026\u0026\n\t\t\t// Check that national prefix formatting rule is not a \"dummy\" one.\n\t\t\t!FIRST_GROUP_ONLY_PREFIX_PATTERN.test(this.nationalPrefixFormattingRule())\n\t\t\t// In compressed metadata, `this.nationalPrefixFormattingRule()` is `0`\n\t\t\t// when `national_prefix_formatting_rule` is not present.\n\t\t\t// So, `true` or `false` are returned explicitly here, so that\n\t\t\t// `0` number isn't returned.\n\t\t\t? true\n\t\t\t: false\n\t}\n\n\tinternationalFormat() {\n\t\treturn this._format[5] || this.format()\n\t}\n}\n\n/**\n * A pattern that is used to determine if the national prefix formatting rule\n * has the first group only, i.e., does not start with the national prefix.\n * Note that the pattern explicitly allows for unbalanced parentheses.\n */\nconst FIRST_GROUP_ONLY_PREFIX_PATTERN = /^\\(?\\$1\\)?$/\n\nclass Type {\n\tconstructor(type, metadata) {\n\t\tthis.type = type\n\t\tthis.metadata = metadata\n\t}\n\n\tpattern() {\n\t\tif (this.metadata.v1) return this.type\n\t\treturn this.type[0]\n\t}\n\n\tpossibleLengths() {\n\t\tif (this.metadata.v1) return\n\t\treturn this.type[1] || this.metadata.possibleLengths()\n\t}\n}\n\nfunction getType(types, type) {\n\tswitch (type) {\n\t\tcase 'FIXED_LINE':\n\t\t\treturn types[0]\n\t\tcase 'MOBILE':\n\t\t\treturn types[1]\n\t\tcase 'TOLL_FREE':\n\t\t\treturn types[2]\n\t\tcase 'PREMIUM_RATE':\n\t\t\treturn types[3]\n\t\tcase 'PERSONAL_NUMBER':\n\t\t\treturn types[4]\n\t\tcase 'VOICEMAIL':\n\t\t\treturn types[5]\n\t\tcase 'UAN':\n\t\t\treturn types[6]\n\t\tcase 'PAGER':\n\t\t\treturn types[7]\n\t\tcase 'VOIP':\n\t\t\treturn types[8]\n\t\tcase 'SHARED_COST':\n\t\t\treturn types[9]\n\t}\n}\n\nexport function validateMetadata(metadata) {\n\tif (!metadata) {\n\t\tthrow new Error('[libphonenumber-js] `metadata` argument not passed. Check your arguments.')\n\t}\n\n\t// `country_phone_code_to_countries` was renamed to `country_calling_codes` in `1.0.18`.\n\t// For that reason, it's not used in this detection algorithm.\n\t// Instead, it detects by `countries: {}` property existence.\n\tif (!isObject(metadata) || !isObject(metadata.countries)) {\n\t\tthrow new Error(`[libphonenumber-js] \\`metadata\\` argument was passed but it's not a valid metadata. Must be an object having \\`.countries\\` child object property. Got ${isObject(metadata) ? 'an object of shape: { ' + Object.keys(metadata).join(', ') + ' }' : 'a ' + typeOf(metadata) + ': ' + metadata}.`)\n\t}\n}\n\n// Babel transforms `typeof` into some \"branches\"\n// so istanbul will show this as \"branch not covered\".\n/* istanbul ignore next */\nconst typeOf = _ =\u003e typeof _\n\n/**\n * Returns extension prefix for a country.\n * @param  {string} country\n * @param  {object} metadata\n * @return {string?}\n * @example\n * // Returns \" ext. \"\n * getExtPrefix(\"US\")\n */\nexport function getExtPrefix(country, metadataJson) {\n\tconst metadata = new Metadata(metadataJson)\n\tif (metadata.hasCountry(country)) {\n\t\treturn metadata.selectNumberingPlan(country).ext()\n\t}\n\treturn DEFAULT_EXT_PREFIX\n}\n\n/**\n * Returns \"country calling code\" for a country.\n * Throws an error if the country doesn't exist or isn't supported by this library.\n * @param  {string} country\n * @param  {object} metadataJson\n * @return {string}\n * @example\n * // Returns \"44\"\n * getCountryCallingCode(\"GB\")\n */\nexport function getCountryCallingCode(country, metadataJson) {\n\tconst metadata = new Metadata(metadataJson)\n\tif (metadata.hasCountry(country)) {\n\t\treturn metadata.selectNumberingPlan(country).countryCallingCode()\n\t}\n\tthrow new Error(`Unknown country: ${country}`)\n}\n\n/**\n * Tells if a country code is supported.\n * @param  {string} country\n * @param  {object} metadataJson\n * @return {boolean}\n * @example\n * // Returns `true`\n * isSupportedCountry(\"GB\")\n */\nexport function isSupportedCountry(country, metadataJson) {\n\t// const metadata = new Metadata(metadataJson)\n\t// return metadata.hasCountry(country)\n\treturn metadataJson.countries.hasOwnProperty(country)\n}\n\n/**\n * Sets `v1`/`v2`/`v3`/`v4` properties on `this` object.\n * @param {object} metadata — Metadata JSON\n */\nfunction setVersion(metadata) {\n\tconst { version } = metadata\n\tif (typeof version === 'number') {\n\t\tthis.v1 = version === 1\n\t\tthis.v2 = version === 2\n\t\tthis.v3 = version === 3\n\t\tthis.v4 = version === 4\n\t} else {\n\t\tif (!version) {\n\t\t\tthis.v1 = true\n\t\t} else if (compare(version, V3) === -1) {\n\t\t\tthis.v2 = true\n\t\t} else if (compare(version, V4) === -1) {\n\t\t\tthis.v3 = true\n\t\t} else {\n\t\t\tthis.v4 = true\n\t\t}\n\t}\n}","/**\n * Merges two arrays.\n * @param  {*} a\n * @param  {*} b\n * @return {*}\n */\nexport default function mergeArrays(a, b) {\n\tconst merged = a.slice()\n\n\tfor (const element of b) {\n\t\tif (a.indexOf(element) \u003c 0) {\n\t\t\tmerged.push(element)\n\t\t}\n\t}\n\n\treturn merged.sort((a, b) =\u003e a - b)\n\n\t// ES6 version, requires Set polyfill.\n\t// let merged = new Set(a)\n\t// for (const element of b) {\n\t// \tmerged.add(i)\n\t// }\n\t// return Array.from(merged).sort((a, b) =\u003e a - b)\n}","import Metadata from '../metadata.js'\nimport mergeArrays from './mergeArrays.js'\n\n/**\n * Checks phone number length against the phone numbering plan selected in metadata.\n * Optionally, it could be restrained by a specific country.\n * @param {string} nationalNumber\n * @param {string?} country — Specific country to use rather than the one that is pre-selected in the metadata instance.\n * @param {Metadata} metadata — Metadata instance with a selected numbering plan.\n * @returns {string}\n */\nexport default function checkNumberLength(nationalNumber, country, metadata) {\n\treturn checkNumberLengthForType(nationalNumber, undefined, country, metadata)\n}\n\n/**\n * Checks phone number length against the phone numbering plan selected in metadata.\n * Optionally, it could be restrained by a specific phone number type or a specific country.\n * @param {string} nationalNumber\n * @param {string?} type — Specific phone number type.\n * @param {string?} country — Specific country to use instead of the one that is pre-selected in the metadata instance.\n * @param {Metadata} metadata — Metadata instance with a selected numbering plan.\n * @returns {string} See the README on `validatePhoneNumberLength()` function, with an addition of a special case: when phone numbers of type `type` aren't possible in the telephone numbering plan, it will return \"INVALID_LENGTH\".\n */\n// Checks whether a number is possible for a certain `country` based on the number length.\n//\n// This function is not supported by metadata generated with ancient versions of\n// `libphonenumber-js` (before version `1.0.18`) which didn't include \"possible lengths\".\n//\n// There was also a known issue with `checkNumberLength()` function:\n// if a number is possible only in a certain `country` among several `countries`\n// that share the same \"country calling code\", that function would check\n// the possibility of the phone number only in the \"main\" `country` for the \"country calling code\"\n// and would not check if it's actually be possible in the speciifc `country`.\n//\n// For example, \"+1310xxxx\" numbers are valid in Canada.\n// However, they are not possible in the US due to being too short.\n// Since Canada and the US share the same country calling code — \"+1\" —\n// `checkNumberLength()` function used to return not \"IS_POSSIBLE\" for \"+1310xxxx\" numbers.\n//\n// In such cases, when using \"/max\" metadata, `isValid()` could output `true`\n// but at the same time `isPossible()` could output `false`, which was contradictory.\n//\n// See https://issuetracker.google.com/issues/335892662 for the discusson in Google's issues.\n//\n// The solution suggested by Google was implemented: an optional `country` argument\n// was added to `checkNumberLength()` function. If present, that `country` will be used\n// to check phone number length for that specific `country` rather than the \"main\" country\n// for the shared \"country calling code\".\n//\nexport function checkNumberLengthForType(nationalNumber, type, country, metadata) {\n\tif (country) {\n\t\t// If a specific `country` is specified, re-create a metadata instance with it.\n\t\tmetadata = new Metadata(metadata.metadata)\n\t\tmetadata.selectNumberingPlan(country)\n\t}\n\n\tconst type_info = metadata.type(type)\n\n\t// There should always be \"\u003cpossiblePengths/\u003e\" set for every type element.\n\t// This is declared in the XML schema.\n\t// For size efficiency, where a sub-description (e.g. fixed-line)\n\t// has the same \"\u003cpossiblePengths/\u003e\" as the \"general description\", this is missing,\n\t// so we fall back to the \"general description\". Where no numbers of the type\n\t// exist at all, there is one possible length (-1) which is guaranteed\n\t// not to match the length of any real phone number.\n\tlet possible_lengths = type_info \u0026\u0026 type_info.possibleLengths() || metadata.possibleLengths()\n\t// let local_lengths = type_info \u0026\u0026 type.possibleLengthsLocal() || metadata.possibleLengthsLocal()\n\n\t// Metadata before version `1.0.18` didn't contain `possible_lengths`.\n\tif (!possible_lengths) {\n\t\treturn 'IS_POSSIBLE'\n\t}\n\n\tif (type === 'FIXED_LINE_OR_MOBILE') {\n\t\t// No such country in metadata.\n\t\t/* istanbul ignore next */\n\t\tif (!metadata.type('FIXED_LINE')) {\n\t\t\t// The rare case has been encountered where no fixedLine data is available\n\t\t\t// (true for some non-geographic entities), so we just check mobile.\n\t\t\treturn checkNumberLengthForType(nationalNumber, 'MOBILE', country, metadata)\n\t\t}\n\n\t\tconst mobile_type = metadata.type('MOBILE')\n\t\tif (mobile_type) {\n\t\t\t// Merge the mobile data in if there was any. \"Concat\" creates a new\n\t\t\t// array, it doesn't edit possible_lengths in place, so we don't need a copy.\n\t\t\t// Note that when adding the possible lengths from mobile, we have\n\t\t\t// to again check they aren't empty since if they are this indicates\n\t\t\t// they are the same as the general desc and should be obtained from there.\n\t\t\tpossible_lengths = mergeArrays(possible_lengths, mobile_type.possibleLengths())\n\t\t\t// The current list is sorted; we need to merge in the new list and\n\t\t\t// re-sort (duplicates are okay). Sorting isn't so expensive because\n\t\t\t// the lists are very small.\n\n\t\t\t// if (local_lengths) {\n\t\t\t// \tlocal_lengths = mergeArrays(local_lengths, mobile_type.possibleLengthsLocal())\n\t\t\t// } else {\n\t\t\t// \tlocal_lengths = mobile_type.possibleLengthsLocal()\n\t\t\t// }\n\t\t}\n\t}\n\t// If the type doesn't exist then return 'INVALID_LENGTH'.\n\telse if (type \u0026\u0026 !type_info) {\n\t\treturn 'INVALID_LENGTH'\n\t}\n\n\tconst actual_length = nationalNumber.length\n\n\t// In `libphonenumber-js` all \"local-only\" formats are dropped for simplicity.\n\t// // This is safe because there is never an overlap beween the possible lengths\n\t// // and the local-only lengths; this is checked at build time.\n\t// if (local_lengths \u0026\u0026 local_lengths.indexOf(nationalNumber.length) \u003e= 0)\n\t// {\n\t// \treturn 'IS_POSSIBLE_LOCAL_ONLY'\n\t// }\n\n\tconst minimum_length = possible_lengths[0]\n\n\tif (minimum_length === actual_length) {\n\t\treturn 'IS_POSSIBLE'\n\t}\n\n\tif (minimum_length \u003e actual_length) {\n\t\treturn 'TOO_SHORT'\n\t}\n\n\tif (possible_lengths[possible_lengths.length - 1] \u003c actual_length) {\n\t\treturn 'TOO_LONG'\n\t}\n\n\t// We skip the first element since we've already checked it.\n\treturn possible_lengths.indexOf(actual_length, 1) \u003e= 0 ? 'IS_POSSIBLE' : 'INVALID_LENGTH'\n}","import Metadata from './metadata.js'\nimport checkNumberLength from './helpers/checkNumberLength.js'\n\n/**\n * Checks if a phone number is \"possible\" (basically just checks its length).\n *\n * isPossible(phoneNumberInstance, { ..., v2: true }, metadata)\n *\n * isPossible({ phone: '8005553535', country: 'RU' }, { ... }, metadata)\n * isPossible({ phone: '8005553535', country: 'RU' }, undefined, metadata)\n *\n * @param  {object|PhoneNumber} input — If `options.v2: true` flag is passed, the `input` should be a `PhoneNumber` instance. Otherwise, it should be an object of shape `{ phone: '...', country: '...' }`.\n * @param  {object} [options]\n * @param  {object} metadataJson\n * @return {string}\n */\nexport default function isPossiblePhoneNumber(input, options, metadataJson) {\n\t/* istanbul ignore if */\n\tif (options === undefined) {\n\t\toptions = {}\n\t}\n\n\tconst metadata = new Metadata(metadataJson)\n\n\tif (options.v2) {\n\t\tif (!input.countryCallingCode) {\n\t\t\tthrow new Error('Invalid phone number object passed')\n\t\t}\n\t\tmetadata.selectNumberingPlan(input.country || input.countryCallingCode)\n\t} else {\n\t\tif (!input.phone) {\n\t\t\treturn false\n\t\t}\n\t\tif (input.country) {\n\t\t\tif (!metadata.hasCountry(input.country)) {\n\t\t\t\tthrow new Error(`Unknown country: ${input.country}`)\n\t\t\t}\n\t\t\tmetadata.selectNumberingPlan(input.country)\n\t\t} else {\n\t\t\tif (!input.countryCallingCode) {\n\t\t\t\tthrow new Error('Invalid phone number object passed')\n\t\t\t}\n\t\t\tmetadata.selectNumberingPlan(input.countryCallingCode)\n\t\t}\n\t}\n\n\t// Old (legacy) metadata (\u003c 1.0.18) had no \"possible length\" data.\n\t// So `isPossibleNumber()` function is supported only for non-legacy metadata.\n\tif (metadata.possibleLengths()) {\n\t\treturn isPossibleNumber(input.phone || input.nationalNumber, metadata)\n\t}\n\n\t// There was a bug in versions from `1.7.35` to `1.7.37` of `libphonenumber-js`\n\t// where \"possible_lengths\" property was missing from \"non-geographical\" numbering plans' metadata.\n\t// After that, the bug was noticed and fixed.\n\t// So for versions from `1.7.35` to `1.7.37`, just assume that all \"non=geotraphical\" numbers are possible.\n\t// The reason is that the bug was noticed relatively quickly (within a day or so)\n\t// and it's unlikely that anyone generated their custom metadata in that short time span.\n\t// And if they didn't generate any custom metadata then a follow-up package update would've silently fixed the bug.\n\tif (input.countryCallingCode \u0026\u0026 metadata.isNonGeographicCallingCode(input.countryCallingCode)) {\n\t\treturn true\n\t}\n\n\t// `isPossibleNumber()` function is not supported.\n\tthrow new Error('Missing \"possibleLengths\" in metadata. Perhaps the metadata has been generated before v1.0.18.');\n}\n\n/**\n * Tells if a given national (significant) number is possible\n * @param {string} nationalNumber\n * @param {Metadata} metadata = Metadata instance with a pre-selected telephone numbering plan.\n * @returns {boolean}\n */\nexport function isPossibleNumber(nationalNumber, metadata) {\n\tswitch (checkNumberLength(nationalNumber, undefined, metadata)) {\n\t\tcase 'IS_POSSIBLE':\n\t\t\treturn true\n\t\t// This library ignores \"local-only\" phone numbers (for simplicity).\n\t\t// See the readme for more info on what are \"local-only\" phone numbers.\n\t\t// case 'IS_POSSIBLE_LOCAL_ONLY':\n\t\t// \treturn !isInternational\n\t\tdefault:\n\t\t\treturn false\n\t}\n}","/**\n * Checks whether the entire input sequence can be matched\n * against the regular expression.\n * @return {boolean}\n */\nexport default function matchesEntirely(text, regularExpressionText) {\n\t// If the assigning of the `''` default value is moved to the arguments above,\n\t// the code coverage would decrease for some weird reason.\n\ttext = text || ''\n\treturn new RegExp('^(?:' + regularExpressionText + ')$').test(text)\n}","import Metadata from '../metadata.js'\nimport matchesEntirely from './matchesEntirely.js'\n\nconst NON_FIXED_LINE_PHONE_TYPES = [\n\t'MOBILE',\n\t'PREMIUM_RATE',\n\t'TOLL_FREE',\n\t'SHARED_COST',\n\t'VOIP',\n\t'PERSONAL_NUMBER',\n\t'PAGER',\n\t'UAN',\n\t'VOICEMAIL'\n]\n\n// Finds out national phone number type (fixed line, mobile, etc)\nexport default function getNumberType(input, options, metadataJson)\n{\n\t// If assigning the `{}` default value is moved to the arguments above,\n\t// code coverage would decrease for some weird reason.\n\toptions = options || {}\n\n\t// When `parse()` returns an empty object — `{}` —\n\t// that means that the phone number is malformed,\n\t// so it can't possibly be valid.\n\tif (!input.country \u0026\u0026 !input.countryCallingCode) {\n\t\treturn\n\t}\n\n\tconst metadata = new Metadata(metadataJson)\n\n\tmetadata.selectNumberingPlan(input.country || input.countryCallingCode)\n\n\tconst nationalNumber = options.v2 ? input.nationalNumber : input.phone\n\n\t// The following is copy-pasted from the original function:\n\t// https://github.com/googlei18n/libphonenumber/blob/3ea547d4fbaa2d0b67588904dfa5d3f2557c27ff/javascript/i18n/phonenumbers/phonenumberutil.js#L2835\n\n\t// Is this national number even valid for this country\n\tif (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern())) {\n\t\treturn\n\t}\n\n\t// Is it fixed line number\n\tif (isNumberTypeEqualTo(nationalNumber, 'FIXED_LINE', metadata)) {\n\t\t// Because duplicate regular expressions are removed\n\t\t// to reduce metadata size, if \"mobile\" pattern is \"\"\n\t\t// then it means it was removed due to being a duplicate of the fixed-line pattern.\n\t\t//\n\t\tif (metadata.type('MOBILE') \u0026\u0026 metadata.type('MOBILE').pattern() === '') {\n\t\t\treturn 'FIXED_LINE_OR_MOBILE'\n\t\t}\n\n\t\t// `MOBILE` type pattern isn't included if it matched `FIXED_LINE` one.\n\t\t// For example, for \"US\" country.\n\t\t// Old metadata (\u003c `1.0.18`) had a specific \"types\" data structure\n\t\t// that happened to be `undefined` for `MOBILE` in that case.\n\t\t// Newer metadata (\u003e= `1.0.18`) has another data structure that is\n\t\t// not `undefined` for `MOBILE` in that case (it's just an empty array).\n\t\t// So this `if` is just for backwards compatibility with old metadata.\n\t\tif (!metadata.type('MOBILE')) {\n\t\t\treturn 'FIXED_LINE_OR_MOBILE'\n\t\t}\n\n\t\t// Check if the number happens to qualify as both fixed line and mobile.\n\t\t// (no such country in the minimal metadata set)\n\t\t/* istanbul ignore if */\n\t\tif (isNumberTypeEqualTo(nationalNumber, 'MOBILE', metadata)) {\n\t\t\treturn 'FIXED_LINE_OR_MOBILE'\n\t\t}\n\n\t\treturn 'FIXED_LINE'\n\t}\n\n\tfor (const type of NON_FIXED_LINE_PHONE_TYPES) {\n\t\tif (isNumberTypeEqualTo(nationalNumber, type, metadata)) {\n\t\t\treturn type\n\t\t}\n\t}\n}\n\nexport function isNumberTypeEqualTo(nationalNumber, type, metadata) {\n\tconst typeDefinition = metadata.type(type)\n\tif (!typeDefinition || !typeDefinition.pattern()) {\n\t\treturn false\n\t}\n\n\t// Check if any possible number lengths are present;\n\t// if so, we use them to avoid checking\n\t// the validation pattern if they don't match.\n\t// If they are absent, this means they match\n\t// the general description, which we have\n\t// already checked before a specific number type.\n\tif (\n\t\ttypeDefinition.possibleLengths() \u0026\u0026\n\t\ttypeDefinition.possibleLengths().indexOf(nationalNumber.length) \u003c 0\n\t) {\n\t\treturn false\n\t}\n\n\treturn matchesEntirely(nationalNumber, typeDefinition.pattern())\n}","import Metadata from './metadata.js'\nimport matchesEntirely from './helpers/matchesEntirely.js'\nimport getNumberType from './helpers/getNumberType.js'\n\n/**\n * Checks if a given phone number is valid.\n *\n * isValid(phoneNumberInstance, { ..., v2: true }, metadata)\n *\n * isPossible({ phone: '8005553535', country: 'RU' }, { ... }, metadata)\n * isPossible({ phone: '8005553535', country: 'RU' }, undefined, metadata)\n *\n * If the `number` is a string, it will be parsed to an object,\n * but only if it contains only valid phone number characters (including punctuation).\n * If the `number` is an object, it is used as is.\n *\n * The optional `defaultCountry` argument is the default country.\n * I.e. it does not restrict to just that country,\n * e.g. in those cases where several countries share\n * the same phone numbering rules (NANPA, Britain, etc).\n * For example, even though the number `07624 369230`\n * belongs to the Isle of Man (\"IM\" country code)\n * calling `isValidNumber('07624369230', 'GB', metadata)`\n * still returns `true` because the country is not restricted to `GB`,\n * it's just that `GB` is the default one for the phone numbering rules.\n * For restricting the country see `isValidNumberForRegion()`\n * though restricting a country might not be a good idea.\n * https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\n *\n * Examples:\n *\n * ```js\n * isValidNumber('+78005553535', metadata)\n * isValidNumber('8005553535', 'RU', metadata)\n * isValidNumber('88005553535', 'RU', metadata)\n * isValidNumber({ phone: '8005553535', country: 'RU' }, metadata)\n * ```\n */\nexport default function isValidNumber(input, options, metadataJson)\n{\n\t// If assigning the `{}` default value is moved to the arguments above,\n\t// code coverage would decrease for some weird reason.\n\toptions = options || {}\n\n\tconst metadata = new Metadata(metadataJson)\n\n\tmetadata.selectNumberingPlan(input.country || input.countryCallingCode)\n\n\t// By default, countries only have type regexps when it's required for\n\t// distinguishing different countries having the same `countryCallingCode`.\n\tif (metadata.hasTypes()) {\n\t\treturn getNumberType(input, options, metadata.metadata) !== undefined\n\t}\n\n\t// If there are no type regexps for this country in metadata then use\n\t// `nationalNumberPattern` as a \"better than nothing\" replacement.\n\tconst nationalNumber = options.v2 ? input.nationalNumber : input.phone\n\treturn matchesEntirely(nationalNumber, metadata.nationalNumberPattern())\n}","const COUNTRY_CODE_REG_EXP = /^[A-Z]{2}$/\n\nexport default function isCountryCode(string) {\n\treturn COUNTRY_CODE_REG_EXP.test(string)\n}\n","import Metadata from '../metadata.js'\nimport isCountryCode from './isCountryCode.js'\n\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\n\nexport default function getCountryAndCallingCodeFromOneOfThem(countryOrCallingCode, metadataJson) {\n\tlet country\n\tlet callingCode\n\n\tconst metadata = new Metadata(metadataJson)\n\t// If country code is passed then derive `countryCallingCode` from it.\n\t// Also store the country code as `.country`.\n\tif (isCountryCode(countryOrCallingCode)) {\n\t\tcountry = countryOrCallingCode\n\t\tmetadata.selectNumberingPlan(country)\n\t\tcallingCode = metadata.countryCallingCode()\n\t} else {\n\t\tcallingCode = countryOrCallingCode\n\t\t/* istanbul ignore if */\n\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n\t\t\tif (metadata.isNonGeographicCallingCode(callingCode)) {\n\t\t\t\tcountry = '001'\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\tcountry,\n\t\tcallingCode\n\t}\n}","import Metadata from '../metadata.js'\n\n/**\n * Returns a list of countries that the phone number could potentially belong to.\n * @param  {string} callingCode — Calling code.\n * @param  {string} nationalNumber — National (significant) number.\n * @param  {object} metadata — Metadata.\n * @return {string[]} A list of possible countries.\n */\nexport default function getPossibleCountriesForNumber(callingCode, nationalNumber, metadata) {\n\tconst _metadata = new Metadata(metadata)\n\tlet possibleCountries = _metadata.getCountryCodesForCallingCode(callingCode)\n\tif (!possibleCountries) {\n\t\treturn []\n\t}\n\treturn possibleCountries.filter((country) =\u003e {\n\t\treturn couldNationalNumberBelongToCountry(nationalNumber, country, metadata)\n\t})\n}\n\nfunction couldNationalNumberBelongToCountry(nationalNumber, country, metadataJson) {\n\tconst metadata = new Metadata(metadataJson)\n\tmetadata.selectNumberingPlan(country)\n\treturn metadata.numberingPlan.possibleLengths().indexOf(nationalNumber.length) \u003e= 0\n}","// The minimum length of the national significant number.\nexport const MIN_LENGTH_FOR_NSN = 2\n\n// The ITU says the maximum length should be 15,\n// but one can find longer numbers in Germany.\nexport const MAX_LENGTH_FOR_NSN = 17\n\n// The maximum length of the country calling code.\nexport const MAX_LENGTH_COUNTRY_CODE = 3\n\n// Digits accepted in phone numbers\n// (ascii, fullwidth, arabic-indic, and eastern arabic digits).\nexport const VALID_DIGITS = '0-9\\uFF10-\\uFF19\\u0660-\\u0669\\u06F0-\\u06F9'\n\n// `DASHES` will be right after the opening square bracket of the \"character class\"\nconst DASHES = '-\\u2010-\\u2015\\u2212\\u30FC\\uFF0D'\nconst SLASHES = '\\uFF0F/'\nconst DOTS = '\\uFF0E.'\nexport const WHITESPACE = ' \\u00A0\\u00AD\\u200B\\u2060\\u3000'\nconst BRACKETS = '()\\uFF08\\uFF09\\uFF3B\\uFF3D\\\\[\\\\]'\n// export const OPENING_BRACKETS = '(\\uFF08\\uFF3B\\\\\\['\nconst TILDES = '~\\u2053\\u223C\\uFF5E'\n\n// Regular expression of acceptable punctuation found in phone numbers. This\n// excludes punctuation found as a leading character only. This consists of dash\n// characters, white space characters, full stops, slashes, square brackets,\n// parentheses and tildes. Full-width variants are also present.\nexport const VALID_PUNCTUATION = `${DASHES}${SLASHES}${DOTS}${WHITESPACE}${BRACKETS}${TILDES}`\n\nexport const PLUS_CHARS = '+\\uFF0B'\n// const LEADING_PLUS_CHARS_PATTERN = new RegExp('^[' + PLUS_CHARS + ']+')","import Metadata from '../metadata.js'\nimport { VALID_DIGITS } from '../constants.js'\n\nconst CAPTURING_DIGIT_PATTERN = new RegExp('([' + VALID_DIGITS + '])')\n\nexport default function stripIddPrefix(number, country, callingCode, metadataJson) {\n\tif (!country) {\n\t\treturn\n\t}\n\n\t// Get the IDD prefix pattern.\n\tconst metadata = new Metadata(metadataJson)\n\tmetadata.selectNumberingPlan(country || callingCode)\n\tconst IDDPrefixPattern = new RegExp(metadata.IDDPrefix())\n\n\t// Check if the number is IDD-prefixed.\n\tif (number.search(IDDPrefixPattern) !== 0) {\n\t\treturn\n\t}\n\n\t// Strip IDD prefix.\n\tnumber = number.slice(number.match(IDDPrefixPattern)[0].length)\n\n\t// If there're any digits after an IDD prefix,\n\t// then those digits are a country calling code.\n\t// Since no country code starts with a `0`,\n\t// the code below validates that the next digit (if present) is not `0`.\n\tconst matchedGroups = number.match(CAPTURING_DIGIT_PATTERN)\n\tif (matchedGroups \u0026\u0026 matchedGroups[1] != null \u0026\u0026 matchedGroups[1].length \u003e 0) {\n\t\tif (matchedGroups[1] === '0') {\n\t\t\treturn\n\t\t}\n\t}\n\n\treturn number\n}","/**\n * Strips any national prefix (such as 0, 1) present in a\n * (possibly incomplete) number provided.\n * \"Carrier codes\" are only used  in Colombia and Brazil,\n * and only when dialing within those countries from a mobile phone to a fixed line number.\n * Sometimes it won't actually strip national prefix\n * and will instead prepend some digits to the `number`:\n * for example, when number `2345678` is passed with `VI` country selected,\n * it will return `{ number: \"3402345678\" }`, because `340` area code is prepended.\n * @param {string} number — National number digits.\n * @param {object} metadata — Metadata with country selected.\n * @return {object} `{ nationalNumber: string, nationalPrefix: string? carrierCode: string? }`. Even if a national prefix was extracted, it's not necessarily present in the returned object, so don't rely on its presence in the returned object in order to find out whether a national prefix has been extracted or not.\n */\nexport default function extractNationalNumberFromPossiblyIncompleteNumber(number, metadata) {\n\tif (number \u0026\u0026 metadata.numberingPlan.nationalPrefixForParsing()) {\n\t\t// See METADATA.md for the description of\n\t\t// `national_prefix_for_parsing` and `national_prefix_transform_rule`.\n\t\t// Attempt to parse the first digits as a national prefix.\n\t\tconst prefixPattern = new RegExp('^(?:' + metadata.numberingPlan.nationalPrefixForParsing() + ')')\n\t\tconst prefixMatch = prefixPattern.exec(number)\n\t\tif (prefixMatch) {\n\t\t\tlet nationalNumber\n\t\t\tlet carrierCode\n\t\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\n\t\t\t// If a `national_prefix_for_parsing` has any \"capturing groups\"\n\t\t\t// then it means that the national (significant) number is equal to\n\t\t\t// those \"capturing groups\" transformed via `national_prefix_transform_rule`,\n\t\t\t// and nothing could be said about the actual national prefix:\n\t\t\t// what is it and was it even there.\n\t\t\t// If a `national_prefix_for_parsing` doesn't have any \"capturing groups\",\n\t\t\t// then everything it matches is a national prefix.\n\t\t\t// To determine whether `national_prefix_for_parsing` matched any\n\t\t\t// \"capturing groups\", the value of the result of calling `.exec()`\n\t\t\t// is looked at, and if it has non-undefined values where there're\n\t\t\t// \"capturing groups\" in the regular expression, then it means\n\t\t\t// that \"capturing groups\" have been matched.\n\t\t\t// It's not possible to tell whether there'll be any \"capturing gropus\"\n\t\t\t// before the matching process, because a `national_prefix_for_parsing`\n\t\t\t// could exhibit both behaviors.\n\t\t\tconst capturedGroupsCount = prefixMatch.length - 1\n\t\t\tconst hasCapturedGroups = capturedGroupsCount \u003e 0 \u0026\u0026 prefixMatch[capturedGroupsCount]\n\t\t\tif (metadata.nationalPrefixTransformRule() \u0026\u0026 hasCapturedGroups) {\n\t\t\t\tnationalNumber = number.replace(\n\t\t\t\t\tprefixPattern,\n\t\t\t\t\tmetadata.nationalPrefixTransformRule()\n\t\t\t\t)\n\t\t\t\t// If there's more than one captured group,\n\t\t\t\t// then carrier code is the second one.\n\t\t\t\tif (capturedGroupsCount \u003e 1) {\n\t\t\t\t\tcarrierCode = prefixMatch[1]\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If there're no \"capturing groups\",\n\t\t\t// or if there're \"capturing groups\" but no\n\t\t\t// `national_prefix_transform_rule`,\n\t\t\t// then just strip the national prefix from the number,\n\t\t\t// and possibly a carrier code.\n\t\t\t// Seems like there could be more.\n\t\t\telse {\n\t\t\t\t// `prefixBeforeNationalNumber` is the whole substring matched by\n\t\t\t\t// the `national_prefix_for_parsing` regular expression.\n\t\t\t\t// There seem to be no guarantees that it's just a national prefix.\n\t\t\t\t// For example, if there's a carrier code, it's gonna be a\n\t\t\t\t// part of `prefixBeforeNationalNumber` too.\n\t\t\t\tconst prefixBeforeNationalNumber = prefixMatch[0]\n\t\t\t\tnationalNumber = number.slice(prefixBeforeNationalNumber.length)\n\t\t\t\t// If there's at least one captured group,\n\t\t\t\t// then carrier code is the first one.\n\t\t\t\tif (hasCapturedGroups) {\n\t\t\t\t\tcarrierCode = prefixMatch[1]\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Tries to guess whether a national prefix was present in the input.\n\t\t\t// This is not something copy-pasted from Google's library:\n\t\t\t// they don't seem to have an equivalent for that.\n\t\t\t// So this isn't an \"officially approved\" way of doing something like that.\n\t\t\t// But since there seems no other existing method, this library uses it.\n\t\t\tlet nationalPrefix\n\t\t\tif (hasCapturedGroups) {\n\t\t\t\tconst possiblePositionOfTheFirstCapturedGroup = number.indexOf(prefixMatch[1])\n\t\t\t\tconst possibleNationalPrefix = number.slice(0, possiblePositionOfTheFirstCapturedGroup)\n\t\t\t\t// Example: an Argentinian (AR) phone number `0111523456789`.\n\t\t\t\t// `prefixMatch[0]` is `01115`, and `$1` is `11`,\n\t\t\t\t// and the rest of the phone number is `23456789`.\n\t\t\t\t// The national number is transformed via `9$1` to `91123456789`.\n\t\t\t\t// National prefix `0` is detected being present at the start.\n\t\t\t\t// if (possibleNationalPrefix.indexOf(metadata.numberingPlan.nationalPrefix()) === 0) {\n\t\t\t\tif (possibleNationalPrefix === metadata.numberingPlan.nationalPrefix()) {\n\t\t\t\t\tnationalPrefix = metadata.numberingPlan.nationalPrefix()\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnationalPrefix = prefixMatch[0]\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tnationalNumber,\n\t\t\t\tnationalPrefix,\n\t\t\t\tcarrierCode\n\t\t\t}\n\t\t}\n\t}\n   return {\n   \tnationalNumber: number\n   }\n}","import Metadata from '../metadata.js'\nimport getNumberType from './getNumberType.js'\n\n/**\n * Returns the exact country that a given national (significant) number belongs to\n * in case of ambiguity, i.e. when multiple countries share the same \"country calling code\".\n * @param {string} [nationalNumber]\n * @param {string[]} countries — A list of countries that share the same calling code.\n * @param {object} metadata — Metadata JSON.\n * @returns {string?} Returns the exact country this number belongs to, or `undefined` if the exact country couldn't be determined.\n */\nexport default function getCountryByNationalNumber(nationalNumber, countries, metadataJson) {\n\t// Create a new `metadata` instance because it will be selecting a `country`.\n\tconst metadata = new Metadata(metadataJson)\n\n\t// const matchingCountries = []\n\n\tfor (const country of countries) {\n\t\tmetadata.selectNumberingPlan(country)\n\t\t// \"Leading digits\" patterns are only defined for about 20% of all countries.\n\t\t// By definition, matching \"leading digits\" is a sufficient but not a necessary\n\t\t// condition for a phone number to belong to a country.\n\t\t// The point of \"leading digits\" check is that it's the fastest one to get a match.\n\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md#leading_digits\n\t\t// I'd suppose that \"leading digits\" patterns are mutually exclusive for different countries\n\t\t// because of the intended use of that feature.\n\t\tif (metadata.leadingDigits()) {\n\t\t\tif (nationalNumber \u0026\u0026\n\t\t\t\tnationalNumber.search(metadata.leadingDigits()) === 0) {\n\t\t\t\treturn country\n\t\t\t}\n\t\t}\n\t\t// Else perform full validation with all of those\n\t\t// fixed-line/mobile/etc regular expressions.\n\t\telse if (getNumberType({ phone: nationalNumber, country }, undefined, metadata.metadata)) {\n\t\t\t// When multiple countries share the same \"country calling code\",\n\t\t\t// type patterns aren't guaranteed to be unique among them.\n\t\t\t// For example, both `US` and `CA` have the same pattern for `toll_free` numbers.\n\t\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/103#note_1417147572\n\t\t\t//\n\t\t\t// That means that this `if` condition could be `true` for multiple countries from the list.\n\t\t\t// Currently, it just returns the first one, which is also the \"main\" country for the \"country calling code\".\n\t\t\t// In an example with `toll_free` numbers above, `\"US\"` would be returned even though\n\t\t\t// it could as well be `\"CA\"`.\n\t\t\t//\n\t\t\t// There was also a time when this attempted to be overly smart\n\t\t\t// and kept track of all such multiple matching countries\n\t\t\t// and then picked the one that matched the `defaultCountry`, if provided.\n\t\t\t// For example, with `toll_free` numbers above, and with `defaultCountry: \"CA\"`,\n\t\t\t// it would've returned `\"CA\"` instead of `\"US\"`.\n\t\t\t// Later it turned out that such \"overly smart\" behavior turned out to be just confusing,\n\t\t\t// so this \"overly smart\" country detection was reverted to returning the \"main\" country\n\t\t\t// for the \"country calling code\".\n\t\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/154\n\t\t\t//\n\t\t\treturn country\n\t\t\t//\n\t\t\t// The \"overly smart\" behavior code:\n\t\t\t//\n\t\t\t// if (defaultCountry) {\n\t\t\t// \tif (country === defaultCountry) {\n\t\t\t// \t\treturn country\n\t\t\t// \t} else {\n\t\t\t// \t\tmatchingCountries.push(country)\n\t\t\t// \t}\n\t\t\t// } else {\n\t\t\t// \treturn country\n\t\t\t// }\n\t\t}\n\t}\n\n\t// // Return the first (\"main\") one of the `matchingCountries`.\n\t// if (matchingCountries.length \u003e 0) {\n\t// \treturn matchingCountries[0]\n\t// }\n}","import getCountryByNationalNumber from './getCountryByNationalNumber.js'\n\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\n\n/**\n * Returns the exact country that a given national (significant) number belongs to\n * in case of ambiguity, i.e. when multiple countries share the same \"country calling code\".\n * @param {string} [callingCode]\n * @param {string} [options.nationalNumber] — National (significant) number.\n * @param {Metadata} options.metadata — Metadata instance.\n * @returns {string?} Returns the most suitable country for this calling code and national (significant) number.\n */\nexport default function getCountryByCallingCode(callingCode, {\n\tnationalNumber,\n\tmetadata\n}) {\n\t/* istanbul ignore if */\n\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n\t\tif (metadata.isNonGeographicCallingCode(callingCode)) {\n\t\t\treturn '001'\n\t\t}\n\t}\n\tconst possibleCountries = metadata.getCountryCodesForCallingCode(callingCode)\n\tif (!possibleCountries) {\n\t\treturn\n\t}\n\t// If there's just one country corresponding to the country code,\n\t// then just return it, without further phone number digits validation.\n\tif (possibleCountries.length === 1) {\n\t\treturn possibleCountries[0]\n\t}\n\treturn getCountryByNationalNumber(nationalNumber, possibleCountries, metadata.metadata)\n}","import extractNationalNumberFromPossiblyIncompleteNumber from './extractNationalNumberFromPossiblyIncompleteNumber.js'\nimport matchesEntirely from './matchesEntirely.js'\nimport checkNumberLength from './checkNumberLength.js'\nimport getCountryByCallingCode from './getCountryByCallingCode.js'\n\n/**\n * Strips national prefix and carrier code from a complete phone number.\n * The difference from the non-\"FromCompleteNumber\" function is that\n * it won't extract national prefix if the resultant number is too short\n * to be a complete number for the selected phone numbering plan.\n * @param  {string} number — Complete phone number digits.\n * @param  {string?} country — Specific country to use instead of the one that is pre-selected in the metadata instance.\n * @param  {Metadata} metadata — Metadata instance with a selected numbering plan.\n * @return {object} `{ nationalNumber: string, carrierCode: string? }`.\n */\nexport default function extractNationalNumber(number, country, metadata) {\n\t// Parsing national prefixes and carrier codes\n\t// is only required for local phone numbers\n\t// but some people don't understand that\n\t// and sometimes write international phone numbers\n\t// with national prefixes (or maybe even carrier codes).\n\t// http://ucken.blogspot.ru/2016/03/trunk-prefixes-in-skype4b.html\n\t// Google's original library forgives such mistakes\n\t// and so does this library, because it has been requested:\n\t// https://github.com/catamphetamine/libphonenumber-js/issues/127\n\tconst {\n\t\tcarrierCode,\n\t\tnationalNumber\n\t} = extractNationalNumberFromPossiblyIncompleteNumber(\n\t\tnumber,\n\t\tmetadata\n\t)\n\n\tif (nationalNumber !== number) {\n\t\tif (!shouldHaveExtractedNationalPrefix(number, nationalNumber, metadata)) {\n\t\t\t// Don't strip the national prefix.\n\t\t\treturn { nationalNumber: number }\n\t\t}\n\t\t// Check the national (significant) number length after extracting national prefix and carrier code.\n\t\t// Legacy generated metadata (before `1.0.18`) didn't support the \"possible lengths\" feature,\n\t\t// so this `if` will only be executed with newer metadata.\n\t\tif (metadata.numberingPlan.possibleLengths()) {\n\t\t\t// If an exact `country` is not specified, attempt to detect it from the assumed national number.\n\t\t\tif (!country) {\n\t\t\t\tcountry = getCountryByCallingCode(metadata.numberingPlan.callingCode(), {\n\t\t\t\t\tnationalNumber,\n\t\t\t\t\tmetadata\n\t\t\t\t})\n\t\t\t}\n\n\t\t\t// The number remaining after stripping the national prefix and carrier code\n\t\t\t// should be long enough to have a possible length for the country.\n\t\t\t// Otherwise, don't strip the national prefix and carrier code,\n\t\t\t// since the original number could be a valid number.\n\t\t\t// This check has been copy-pasted \"as is\" from Google's original library:\n\t\t\t// https://github.com/google/libphonenumber/blob/876268eb1ad6cdc1b7b5bef17fc5e43052702d57/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L3236-L3250\n\t\t\t// It doesn't check for the \"possibility\" of the original `number`.\n\t\t\t// I guess it's fine not checking that one. It works as is anyway.\n\t\t\tif (!isPossibleIncompleteNationalNumber(nationalNumber, country, metadata)) {\n\t\t\t\t// Don't strip the national prefix.\n\t\t\t\treturn { nationalNumber: number }\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { nationalNumber, carrierCode }\n}\n\n// In some countries, the same digit could be a national prefix\n// or a leading digit of a valid phone number.\n// For example, in Russia, national prefix is `8`,\n// and also `800 555 35 35` is a valid number\n// in which `8` is not a national prefix, but the first digit\n// of a national (significant) number.\n// Same's with Belarus:\n// `82004910060` is a valid national (significant) number,\n// but `2004910060` is not.\n// To support such cases (to prevent the code from always stripping\n// national prefix), a condition is imposed: a national prefix\n// is not extracted when the original number is \"viable\" and the\n// resultant number is not, a \"viable\" national number being the one\n// that matches `national_number_pattern`.\nfunction shouldHaveExtractedNationalPrefix(nationalNumberBefore, nationalNumberAfter, metadata) {\n\t// The equivalent in Google's code is:\n\t// https://github.com/google/libphonenumber/blob/e326fa1fc4283bb05eb35cb3c15c18f98a31af33/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L2969-L3004\n\tif (matchesEntirely(nationalNumberBefore, metadata.nationalNumberPattern()) \u0026\u0026\n\t\t!matchesEntirely(nationalNumberAfter, metadata.nationalNumberPattern())) {\n\t\treturn false\n\t}\n\t// This \"is possible\" national number (length) check has been commented out\n\t// because it's superceded by the (effectively) same check done in the\n\t// `extractNationalNumber()` function after it calls `shouldHaveExtractedNationalPrefix()`.\n\t// In other words, why run the same check twice if it could only be run once.\n\t// // Check the national (significant) number length after extracting national prefix and carrier code.\n\t// // Fixes a minor \"weird behavior\" bug: https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/57\n\t// // (Legacy generated metadata (before `1.0.18`) didn't support the \"possible lengths\" feature).\n\t// if (metadata.possibleLengths()) {\n\t// \tif (isPossibleIncompleteNationalNumber(nationalNumberBefore, metadata) \u0026\u0026\n\t// \t\t!isPossibleIncompleteNationalNumber(nationalNumberAfter, metadata)) {\n\t// \t\treturn false\n\t// \t}\n\t// }\n\treturn true\n}\n\n/**\n * Tells if a given incomplete national number is possible or not.\n * @param {string} nationalNumber\n * @param {string?} country — Specific country rather than the one that is pre-selected in the metadata instance.\n * @param {Metadata} metadata — Metadata instance with a selected numbering plan.\n * @returns {boolean}\n */\nfunction isPossibleIncompleteNationalNumber(nationalNumber, country, metadata) {\n\tswitch (checkNumberLength(nationalNumber, country, metadata)) {\n\t\tcase 'TOO_SHORT':\n\t\tcase 'INVALID_LENGTH':\n\t\t// This library ignores \"local-only\" phone numbers (for simplicity).\n\t\t// See the readme for more info on what are \"local-only\" phone numbers.\n\t\t// case 'IS_POSSIBLE_LOCAL_ONLY':\n\t\t\treturn false\n\t\tdefault:\n\t\t\treturn true\n\t}\n}","import Metadata from '../metadata.js'\nimport matchesEntirely from './matchesEntirely.js'\nimport extractNationalNumber from './extractNationalNumber.js'\nimport checkNumberLength from './checkNumberLength.js'\nimport getCountryCallingCode from '../getCountryCallingCode.js'\n\n/**\n * Sometimes some people incorrectly input international phone numbers\n * without the leading `+`. This function corrects such input.\n * @param  {string} number — Phone number digits (only digits, no `+`).\n * @param  {string} [country] — Exact country of the phone number.\n * @param  {string} [defaultCountry]\n * @param  {string} [defaultCallingCode]\n * @param  {object} metadataJson\n * @return {object} `{ countryCallingCode: string?, number: string }`, where `countryCallingCode` is the calling code that was extracted from the input `number` string, and `number` is the originally passed `number` without the extracted calling code.\n */\nexport default function extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(\n\tnumber,\n\tcountry,\n\tdefaultCountry,\n\tdefaultCallingCode,\n\tmetadataJson\n) {\n\t// Validate arguments.\n\t// The `number` is known to be in a non-international form\n\t// because there's no leading \"+\" character.\n\t// Therefore, there must be either `country` or `defaultCountry` or `defaultCallingCode`.\n\t// Otherwise, there'd be no source for the calling code to search for in the `number`.\n\tif (!(country || defaultCountry || defaultCallingCode)) {\n\t\t// There's no source for the calling code to search for in the `number`.\n\t\treturn { number }\n\t}\n\n\tconst countryCallingCode = country || defaultCountry\n\t\t? getCountryCallingCode(country || defaultCountry, metadataJson)\n\t\t: defaultCallingCode\n\n\tif (number.indexOf(countryCallingCode) === 0) {\n\t\tconst metadata = new Metadata(metadataJson)\n\t\tmetadata.selectNumberingPlan(country || defaultCountry || defaultCallingCode)\n\n\t\tconst possibleShorterNumber = number.slice(countryCallingCode.length)\n\n\t\tconst {\n\t\t\tnationalNumber: possibleShorterNationalNumber,\n\t\t} = extractNationalNumber(\n\t\t\tpossibleShorterNumber,\n\t\t\tundefined,\n\t\t\tmetadata\n\t\t)\n\n\t\tconst {\n\t\t\tnationalNumber\n\t\t} = extractNationalNumber(\n\t\t\tnumber,\n\t\t\tundefined,\n\t\t\tmetadata\n\t\t)\n\n\t\t// If the number was not valid before but is valid now,\n\t\t// or if it was too long before, we consider the number\n\t\t// with the country calling code stripped to be a better result\n\t\t// and keep that instead.\n\t\t// For example, in Germany (+49), `49` is a valid area code,\n\t\t// so if a number starts with `49`, it could be both a valid\n\t\t// national German number or an international number without\n\t\t// a leading `+`.\n\t\tif (\n\t\t\t(\n\t\t\t\t!matchesEntirely(nationalNumber, metadata.nationalNumberPattern()) \u0026\u0026\n\t\t\t\tmatchesEntirely(possibleShorterNationalNumber, metadata.nationalNumberPattern())\n\t\t\t)\n\t\t\t||\n\t\t\tcheckNumberLength(nationalNumber, undefined, metadata) === 'TOO_LONG'\n\t\t) {\n\t\t\treturn {\n\t\t\t\tcountryCallingCode,\n\t\t\t\tnumber: possibleShorterNumber\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { number }\n}","import stripIddPrefix from './stripIddPrefix.js'\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js'\nimport Metadata from '../metadata.js'\nimport { MAX_LENGTH_COUNTRY_CODE } from '../constants.js'\n\n/**\n * Attempts to extract a calling code from a phone number.\n * * If the phone number is found to be \"international\":\n *   * It will attempt to identify the calling code part of it and whether that part is complete and valid.\n *     * If the calling code part is complete and valid, it will return two properties:\n *       that calling code part (without `+`) and the rest of the digits.\n *     * Otherwise, i.e. if the calling code part is incomplete or invalid,\n *       it will return an empty object.\n * * Otherwise, i.e. if the phone number is national, there's no callind code to extract\n *   so it will just return the originally-passed `number` string as the only property.\n * @param  {string} number — Phone number digits (possibly with a `+`).\n * @param  {string} [country] — Country.\n * @param  {string} [defaultCountry] — Default country.\n * @param  {string} [defaultCallingCode] — Default calling code (some phone numbering plans are non-geographic).\n * @param  {object} metadataJson\n * @return {object} `{ countryCallingCodeSource: string?, countryCallingCode: string?, number: string }`, where `countryCallingCodeSource` tells how the returned calling code was extracted (if it was extracted), `countryCallingCode` is the calling code that was extracted from the input `number` string, and `number` is the originally passed `number` without the extracted calling code (and without a `+`). If the calling code is present but incomplete or invalid, it will return an empty object.\n * @example\n * // Returns `{ countryCallingCode: \"1\", number: \"2133734253\" }`.\n * extractCountryCallingCode('2133734253', 'US', null, null, metadata)\n * extractCountryCallingCode('2133734253', null, 'US', null, metadata)\n * extractCountryCallingCode('2133734253', null, null, '1', metadata)\n * extractCountryCallingCode('+12133734253', null, null, null, metadata)\n * extractCountryCallingCode('+12133734253', null, 'RU', null, metadata)\n */\nexport default function extractCountryCallingCode(\n\tnumber,\n\tcountry,\n\tdefaultCountry,\n\tdefaultCallingCode,\n\tmetadataJson\n) {\n\tif (!number) {\n\t\treturn {}\n\t}\n\n\tlet isNumberWithIddPrefix\n\n\t// If this is not an international phone number,\n\t// then either extract an \"IDD\" prefix, or extract a\n\t// country calling code from a number by autocorrecting it\n\t// by prepending a leading `+` in cases when it starts\n\t// with the country calling code.\n\t// https://wikitravel.org/en/International_dialling_prefix\n\t// https://github.com/catamphetamine/libphonenumber-js/issues/376\n\tif (number[0] !== '+') {\n\t\t// Convert an \"out-of-country\" dialing phone number\n\t\t// to a proper international phone number.\n\t\tconst numberWithoutIDD = stripIddPrefix(number, country || defaultCountry, defaultCallingCode, metadataJson)\n\t\t// If an IDD prefix was stripped then\n\t\t// convert the number to international one\n\t\t// for subsequent parsing.\n\t\tif (numberWithoutIDD \u0026\u0026 numberWithoutIDD !== number) {\n\t\t\tisNumberWithIddPrefix = true\n\t\t\tnumber = '+' + numberWithoutIDD\n\t\t} else {\n\t\t\t// Check to see if the number starts with the country calling code\n\t\t\t// for the default country. If so, we remove the country calling code,\n\t\t\t// and do some checks on the validity of the number before and after.\n\t\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/376\n\t\t\tif (country || defaultCountry || defaultCallingCode) {\n\t\t\t\tconst {\n\t\t\t\t\tcountryCallingCode,\n\t\t\t\t\tnumber: shorterNumber\n\t\t\t\t} = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(\n\t\t\t\t\tnumber,\n\t\t\t\t\tcountry,\n\t\t\t\t\tdefaultCountry,\n\t\t\t\t\tdefaultCallingCode,\n\t\t\t\t\tmetadataJson\n\t\t\t\t)\n\t\t\t\tif (countryCallingCode) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcountryCallingCodeSource: 'FROM_NUMBER_WITHOUT_PLUS_SIGN',\n\t\t\t\t\t\tcountryCallingCode,\n\t\t\t\t\t\tnumber: shorterNumber\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t// No need to set it to `UNSPECIFIED`. It can be just `undefined`.\n\t\t\t\t// countryCallingCodeSource: 'UNSPECIFIED',\n\t\t\t\tnumber\n\t\t\t}\n\t\t}\n\t}\n\n\t// `number` can only be international at this point.\n\n\t// Fast abortion: country codes do not begin with a '0'\n\tif (number[1] === '0') {\n\t\treturn {}\n\t}\n\n\tconst metadata = new Metadata(metadataJson)\n\n\t// The thing with country phone codes\n\t// is that they are orthogonal to each other\n\t// i.e. there's no such country phone code A\n\t// for which country phone code B exists\n\t// where B starts with A.\n\t// Therefore, while scanning digits,\n\t// if a valid country code is found,\n\t// that means that it is the country code.\n\t//\n\tlet i = 2\n\twhile (i - 1 \u003c= MAX_LENGTH_COUNTRY_CODE \u0026\u0026 i \u003c= number.length) {\n\t\tconst countryCallingCode = number.slice(1, i)\n\t\tif (metadata.hasCallingCode(countryCallingCode)) {\n\t\t\tmetadata.selectNumberingPlan(countryCallingCode)\n\t\t\treturn {\n\t\t\t\tcountryCallingCodeSource: isNumberWithIddPrefix ? 'FROM_NUMBER_WITH_IDD' : 'FROM_NUMBER_WITH_PLUS_SIGN',\n\t\t\t\tcountryCallingCode,\n\t\t\t\tnumber: number.slice(i)\n\t\t\t}\n\t\t}\n\t\ti++\n\t}\n\n\treturn {}\n}\n\n// The possible values for the returned `countryCallingCodeSource` are:\n//\n// Copy-pasted from:\n// https://github.com/google/libphonenumber/blob/master/resources/phonenumber.proto\n//\n// // The source from which the country_code is derived. This is not set in the\n// // general parsing method, but in the method that parses and keeps raw_input.\n// // New fields could be added upon request.\n// enum CountryCodeSource {\n//  // Default value returned if this is not set, because the phone number was\n//  // created using parse, not parseAndKeepRawInput. hasCountryCodeSource will\n//  // return false if this is the case.\n//  UNSPECIFIED = 0;\n//\n//  // The country_code is derived based on a phone number with a leading \"+\",\n//  // e.g. the French number \"+33 1 42 68 53 00\".\n//  FROM_NUMBER_WITH_PLUS_SIGN = 1;\n//\n//  // The country_code is derived based on a phone number with a leading IDD,\n//  // e.g. the French number \"011 33 1 42 68 53 00\", as it is dialled from US.\n//  FROM_NUMBER_WITH_IDD = 5;\n//\n//  // The country_code is derived based on a phone number without a leading\n//  // \"+\", e.g. the French number \"33 1 42 68 53 00\" when defaultCountry is\n//  // supplied as France.\n//  FROM_NUMBER_WITHOUT_PLUS_SIGN = 10;\n//\n//  // The country_code is derived NOT based on the phone number itself, but\n//  // from the defaultCountry parameter provided in the parsing function by the\n//  // clients. This happens mostly for numbers written in the national format\n//  // (without country code). For example, this would be set when parsing the\n//  // French number \"01 42 68 53 00\", when defaultCountry is supplied as\n//  // France.\n//  FROM_DEFAULT_COUNTRY = 20;\n// }","import { VALID_PUNCTUATION } from '../constants.js'\n\n// Removes brackets and replaces dashes with spaces.\n//\n// E.g. \"(999) 111-22-33\" -\u003e \"999 111 22 33\"\n//\n// For some reason Google's metadata contains `\u003cintlFormat/\u003e`s with brackets and dashes.\n// Meanwhile, there's no single opinion about using punctuation in international phone numbers.\n//\n// For example, Google's `\u003cintlFormat/\u003e` for USA is `+1 213-373-4253`.\n// And here's a quote from WikiPedia's \"North American Numbering Plan\" page:\n// https://en.wikipedia.org/wiki/North_American_Numbering_Plan\n//\n// \"The country calling code for all countries participating in the NANP is 1.\n// In international format, an NANP number should be listed as +1 301 555 01 00,\n// where 301 is an area code (Maryland).\"\n//\n// I personally prefer the international format without any punctuation.\n// For example, brackets are remnants of the old age, meaning that the\n// phone number part in brackets (so called \"area code\") can be omitted\n// if dialing within the same \"area\".\n// And hyphens were clearly introduced for splitting local numbers into memorizable groups.\n// For example, remembering \"5553535\" is difficult but \"555-35-35\" is much simpler.\n// Imagine a man taking a bus from home to work and seeing an ad with a phone number.\n// He has a couple of seconds to memorize that number until it passes by.\n// If it were spaces instead of hyphens the man wouldn't necessarily get it,\n// but with hyphens instead of spaces the grouping is more explicit.\n// I personally think that hyphens introduce visual clutter,\n// so I prefer replacing them with spaces in international numbers.\n// In the modern age all output is done on displays where spaces are clearly distinguishable\n// so hyphens can be safely replaced with spaces without losing any legibility.\n//\nexport default function applyInternationalSeparatorStyle(formattedNumber) {\n\treturn formattedNumber.replace(new RegExp(`[${VALID_PUNCTUATION}]+`, 'g'), ' ').trim()\n}","import applyInternationalSeparatorStyle from './applyInternationalSeparatorStyle.js'\n\n// This was originally set to $1 but there are some countries for which the\n// first group is not used in the national pattern (e.g. Argentina) so the $1\n// group does not match correctly. Therefore, we use `\\d`, so that the first\n// group actually used in the pattern will be matched.\nexport const FIRST_GROUP_PATTERN = /(\\$\\d)/\n\nexport default function formatNationalNumberUsingFormat(\n\tnumber,\n\tformat,\n\t{\n\t\tuseInternationalFormat,\n\t\twithNationalPrefix,\n\t\tcarrierCode,\n\t\tmetadata\n\t}\n) {\n\tconst formattedNumber = number.replace(\n\t\tnew RegExp(format.pattern()),\n\t\tuseInternationalFormat\n\t\t\t? format.internationalFormat()\n\t\t\t: (\n\t\t\t\t// This library doesn't use `domestic_carrier_code_formatting_rule`,\n\t\t\t\t// because that one is only used when formatting phone numbers\n\t\t\t\t// for dialing from a mobile phone, and this is not a dialing library.\n\t\t\t\t// carrierCode \u0026\u0026 format.domesticCarrierCodeFormattingRule()\n\t\t\t\t// \t// First, replace the $CC in the formatting rule with the desired carrier code.\n\t\t\t\t// \t// Then, replace the $FG in the formatting rule with the first group\n\t\t\t\t// \t// and the carrier code combined in the appropriate way.\n\t\t\t\t// \t? format.format().replace(FIRST_GROUP_PATTERN, format.domesticCarrierCodeFormattingRule().replace('$CC', carrierCode))\n\t\t\t\t// \t: (\n\t\t\t\t// \t\twithNationalPrefix \u0026\u0026 format.nationalPrefixFormattingRule()\n\t\t\t\t// \t\t\t? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule())\n\t\t\t\t// \t\t\t: format.format()\n\t\t\t\t// \t)\n\t\t\t\twithNationalPrefix \u0026\u0026 format.nationalPrefixFormattingRule()\n\t\t\t\t\t? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule())\n\t\t\t\t\t: format.format()\n\t\t\t)\n\t)\n\tif (useInternationalFormat) {\n\t\treturn applyInternationalSeparatorStyle(formattedNumber)\n\t}\n\treturn formattedNumber\n}","import Metadata from '../metadata.js'\n\n/**\n * Pattern that makes it easy to distinguish whether a region has a single\n * international dialing prefix or not. If a region has a single international\n * prefix (e.g. 011 in USA), it will be represented as a string that contains\n * a sequence of ASCII digits, and possibly a tilde, which signals waiting for\n * the tone. If there are multiple available international prefixes in a\n * region, they will be represented as a regex string that always contains one\n * or more characters that are not ASCII digits or a tilde.\n */\nconst SINGLE_IDD_PREFIX_REG_EXP = /^[\\d]+(?:[~\\u2053\\u223C\\uFF5E][\\d]+)?$/\n\n// If the `country` supports IDD calling, it returns a preferred IDD prefix.\n// If the `country` doesn't support IDD calling, it returns `undefined`.\nexport default function getIddPrefix(country, callingCode, metadata) {\n\tconst countryMetadata = new Metadata(metadata)\n\tcountryMetadata.selectNumberingPlan(country || callingCode)\n\tif (countryMetadata.defaultIDDPrefix()) {\n\t\treturn countryMetadata.defaultIDDPrefix()\n\t}\n\tif (SINGLE_IDD_PREFIX_REG_EXP.test(countryMetadata.IDDPrefix())) {\n\t\treturn countryMetadata.IDDPrefix()\n\t}\n}\n","import { VALID_DIGITS } from '../../constants.js'\n\n// The RFC 3966 format for extensions.\nconst RFC3966_EXTN_PREFIX = ';ext='\n\n/**\n * Helper method for constructing regular expressions for parsing. Creates\n * an expression that captures up to max_length digits.\n * @return {string} RegEx pattern to capture extension digits.\n */\nconst getExtensionDigitsPattern = (maxLength) =\u003e `([${VALID_DIGITS}]{1,${maxLength}})`\n\n/**\n * Helper initialiser method to create the regular-expression pattern to match\n * extensions.\n * Copy-pasted from Google's `libphonenumber`:\n * https://github.com/google/libphonenumber/blob/55b2646ec9393f4d3d6661b9c82ef9e258e8b829/javascript/i18n/phonenumbers/phonenumberutil.js#L759-L766\n * @return {string} RegEx pattern to capture extensions.\n */\nexport default function createExtensionPattern(purpose) {\n\t// We cap the maximum length of an extension based on the ambiguity of the way\n\t// the extension is prefixed. As per ITU, the officially allowed length for\n\t// extensions is actually 40, but we don't support this since we haven't seen real\n\t// examples and this introduces many false interpretations as the extension labels\n\t// are not standardized.\n\t/** @type {string} */\n\tvar extLimitAfterExplicitLabel = '20';\n\t/** @type {string} */\n\tvar extLimitAfterLikelyLabel = '15';\n\t/** @type {string} */\n\tvar extLimitAfterAmbiguousChar = '9';\n\t/** @type {string} */\n\tvar extLimitWhenNotSure = '6';\n\n\t/** @type {string} */\n\tvar possibleSeparatorsBetweenNumberAndExtLabel = \"[ \\u00A0\\\\t,]*\";\n\t// Optional full stop (.) or colon, followed by zero or more spaces/tabs/commas.\n\t/** @type {string} */\n\tvar possibleCharsAfterExtLabel = \"[:\\\\.\\uFF0E]?[ \\u00A0\\\\t,-]*\";\n\t/** @type {string} */\n\tvar optionalExtnSuffix = \"#?\";\n\n\t// Here the extension is called out in more explicit way, i.e mentioning it obvious\n\t// patterns like \"ext.\".\n\t/** @type {string} */\n\tvar explicitExtLabels =\n\t  \"(?:e?xt(?:ensi(?:o\\u0301?|\\u00F3))?n?|\\uFF45?\\uFF58\\uFF54\\uFF4E?|\\u0434\\u043E\\u0431|anexo)\";\n\t// One-character symbols that can be used to indicate an extension, and less\n\t// commonly used or more ambiguous extension labels.\n\t/** @type {string} */\n\tvar ambiguousExtLabels = \"(?:[x\\uFF58#\\uFF03~\\uFF5E]|int|\\uFF49\\uFF4E\\uFF54)\";\n\t// When extension is not separated clearly.\n\t/** @type {string} */\n\tvar ambiguousSeparator = \"[- ]+\";\n\t// This is the same as possibleSeparatorsBetweenNumberAndExtLabel, but not matching\n\t// comma as extension label may have it.\n\t/** @type {string} */\n\tvar possibleSeparatorsNumberExtLabelNoComma = \"[ \\u00A0\\\\t]*\";\n\t// \",,\" is commonly used for auto dialling the extension when connected. First\n\t// comma is matched through possibleSeparatorsBetweenNumberAndExtLabel, so we do\n\t// not repeat it here. Semi-colon works in Iphone and Android also to pop up a\n\t// button with the extension number following.\n\t/** @type {string} */\n\tvar autoDiallingAndExtLabelsFound = \"(?:,{2}|;)\";\n\n\t/** @type {string} */\n\tvar rfcExtn = RFC3966_EXTN_PREFIX\n\t     + getExtensionDigitsPattern(extLimitAfterExplicitLabel);\n\t/** @type {string} */\n\tvar explicitExtn = possibleSeparatorsBetweenNumberAndExtLabel + explicitExtLabels\n\t     + possibleCharsAfterExtLabel\n\t     + getExtensionDigitsPattern(extLimitAfterExplicitLabel)\n\t     + optionalExtnSuffix;\n\t/** @type {string} */\n\tvar ambiguousExtn = possibleSeparatorsBetweenNumberAndExtLabel + ambiguousExtLabels\n\t     + possibleCharsAfterExtLabel\n\t+ getExtensionDigitsPattern(extLimitAfterAmbiguousChar)\n\t+ optionalExtnSuffix;\n\t/** @type {string} */\n\tvar americanStyleExtnWithSuffix = ambiguousSeparator\n\t+ getExtensionDigitsPattern(extLimitWhenNotSure) + \"#\";\n\n\t/** @type {string} */\n\tvar autoDiallingExtn = possibleSeparatorsNumberExtLabelNoComma\n\t     + autoDiallingAndExtLabelsFound + possibleCharsAfterExtLabel\n\t     + getExtensionDigitsPattern(extLimitAfterLikelyLabel)\n\t+ optionalExtnSuffix;\n\t/** @type {string} */\n\tvar onlyCommasExtn = possibleSeparatorsNumberExtLabelNoComma\n\t    + \"(?:,)+\" + possibleCharsAfterExtLabel\n\t    + getExtensionDigitsPattern(extLimitAfterAmbiguousChar)\n\t    + optionalExtnSuffix;\n\n\t// The first regular expression covers RFC 3966 format, where the extension is added\n\t// using \";ext=\". The second more generic where extension is mentioned with explicit\n\t// labels like \"ext:\". In both the above cases we allow more numbers in extension than\n\t// any other extension labels. The third one captures when single character extension\n\t// labels or less commonly used labels are used. In such cases we capture fewer\n\t// extension digits in order to reduce the chance of falsely interpreting two\n\t// numbers beside each other as a number + extension. The fourth one covers the\n\t// special case of American numbers where the extension is written with a hash\n\t// at the end, such as \"- 503#\". The fifth one is exclusively for extension\n\t// autodialling formats which are used when dialling and in this case we accept longer\n\t// extensions. The last one is more liberal on the number of commas that acts as\n\t// extension labels, so we have a strict cap on the number of digits in such extensions.\n\treturn rfcExtn + \"|\"\n\t       + explicitExtn + \"|\"\n\t       + ambiguousExtn + \"|\"\n\t       + americanStyleExtnWithSuffix + \"|\"\n\t       + autoDiallingExtn + \"|\"\n\t       + onlyCommasExtn;\n}","import {\n\tMIN_LENGTH_FOR_NSN,\n\tVALID_DIGITS,\n\tVALID_PUNCTUATION,\n\tPLUS_CHARS\n} from '../constants.js'\n\nimport createExtensionPattern from './extension/createExtensionPattern.js'\n\n//  Regular expression of viable phone numbers. This is location independent.\n//  Checks we have at least three leading digits, and only valid punctuation,\n//  alpha characters and digits in the phone number. Does not include extension\n//  data. The symbol 'x' is allowed here as valid punctuation since it is often\n//  used as a placeholder for carrier codes, for example in Brazilian phone\n//  numbers. We also allow multiple '+' characters at the start.\n//\n//  Corresponds to the following:\n//  [digits]{minLengthNsn}|\n//  plus_sign*\n//  (([punctuation]|[star])*[digits]){3,}([punctuation]|[star]|[digits]|[alpha])*\n//\n//  The first reg-ex is to allow short numbers (two digits long) to be parsed if\n//  they are entered as \"15\" etc, but only if there is no punctuation in them.\n//  The second expression restricts the number of digits to three or more, but\n//  then allows them to be in international form, and to have alpha-characters\n//  and punctuation. We split up the two reg-exes here and combine them when\n//  creating the reg-ex VALID_PHONE_NUMBER_PATTERN itself so we can prefix it\n//  with ^ and append $ to each branch.\n//\n//  \"Note VALID_PUNCTUATION starts with a -,\n//   so must be the first in the range\" (c) Google devs.\n//  (wtf did they mean by saying that; probably nothing)\n//\nconst MIN_LENGTH_PHONE_NUMBER_PATTERN = '[' + VALID_DIGITS + ']{' + MIN_LENGTH_FOR_NSN + '}'\n//\n// And this is the second reg-exp:\n// (see MIN_LENGTH_PHONE_NUMBER_PATTERN for a full description of this reg-exp)\n//\nexport const VALID_PHONE_NUMBER =\n\t'[' + PLUS_CHARS + ']{0,1}' +\n\t'(?:' +\n\t\t'[' + VALID_PUNCTUATION + ']*' +\n\t\t'[' + VALID_DIGITS + ']' +\n\t'){3,}' +\n\t'[' +\n\t\tVALID_PUNCTUATION +\n\t\tVALID_DIGITS +\n\t']*'\n\n// This regular expression isn't present in Google's `libphonenumber`\n// and is only used to determine whether the phone number being input\n// is too short for it to even consider it a \"valid\" number.\n// This is just a way to differentiate between a really invalid phone\n// number like \"abcde\" and a valid phone number that a user has just\n// started inputting, like \"+1\" or \"1\": both these cases would be\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\n// library can provide a more detailed error message — whether it's\n// really \"not a number\", or is it just a start of a valid phone number.\nconst VALID_PHONE_NUMBER_START_REG_EXP = new RegExp(\n\t'^' +\n\t'[' + PLUS_CHARS + ']{0,1}' +\n\t'(?:' +\n\t\t'[' + VALID_PUNCTUATION + ']*' +\n\t\t'[' + VALID_DIGITS + ']' +\n\t'){1,2}' +\n\t'$'\n, 'i')\n\nexport const VALID_PHONE_NUMBER_WITH_EXTENSION =\n\tVALID_PHONE_NUMBER +\n\t// Phone number extensions\n\t'(?:' + createExtensionPattern() + ')?'\n\n// The combined regular expression for valid phone numbers:\n//\nconst VALID_PHONE_NUMBER_PATTERN = new RegExp(\n\t// Either a short two-digit-only phone number\n\t'^' +\n\t\tMIN_LENGTH_PHONE_NUMBER_PATTERN +\n\t'$' +\n\t'|' +\n\t// Or a longer fully parsed phone number (min 3 characters)\n\t'^' +\n\t\tVALID_PHONE_NUMBER_WITH_EXTENSION +\n\t'$'\n, 'i')\n\n// Checks to see if the string of characters could possibly be a phone number at\n// all. At the moment, checks to see that the string begins with at least 2\n// digits, ignoring any punctuation commonly found in phone numbers. This method\n// does not require the number to be normalized in advance - but does assume\n// that leading non-number symbols have been removed, such as by the method\n// `extract_possible_number`.\n//\nexport default function isViablePhoneNumber(number) {\n\treturn number.length \u003e= MIN_LENGTH_FOR_NSN \u0026\u0026\n\t\tVALID_PHONE_NUMBER_PATTERN.test(number)\n}\n\n// This is just a way to differentiate between a really invalid phone\n// number like \"abcde\" and a valid phone number that a user has just\n// started inputting, like \"+1\" or \"1\": both these cases would be\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\n// library can provide a more detailed error message — whether it's\n// really \"not a number\", or is it just a start of a valid phone number.\nexport function isViablePhoneNumberStart(number) {\n\treturn VALID_PHONE_NUMBER_START_REG_EXP.test(number)\n}","import isViablePhoneNumber from './isViablePhoneNumber.js'\n\n// https://www.ietf.org/rfc/rfc3966.txt\n\n/**\n * @param  {string} text - Phone URI (RFC 3966).\n * @return {object} `{ ?number, ?ext }`.\n */\nexport function parseRFC3966(text) {\n\tlet number\n\tlet ext\n\n\t// Replace \"tel:\" with \"tel=\" for parsing convenience.\n\ttext = text.replace(/^tel:/, 'tel=')\n\n\tfor (const part of text.split(';')) {\n\t\tconst [name, value] = part.split('=')\n\t\tswitch (name) {\n\t\t\tcase 'tel':\n\t\t\t\tnumber = value\n\t\t\t\tbreak\n\t\t\tcase 'ext':\n\t\t\t\text = value\n\t\t\t\tbreak\n\t\t\tcase 'phone-context':\n\t\t\t\t// Only \"country contexts\" are supported.\n\t\t\t\t// \"Domain contexts\" are ignored.\n\t\t\t\tif (value[0] === '+') {\n\t\t\t\t\tnumber = value + number\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\t// If the phone number is not viable, then abort.\n\tif (!isViablePhoneNumber(number)) {\n\t\treturn {}\n\t}\n\n\tconst result = { number }\n\tif (ext) {\n\t\tresult.ext = ext\n\t}\n\treturn result\n}\n\n/**\n * @param  {object} - `{ ?number, ?extension }`.\n * @return {string} Phone URI (RFC 3966).\n */\nexport function formatRFC3966({ number, ext }) {\n\tif (!number) {\n\t\treturn ''\n\t}\n\tif (number[0] !== '+') {\n\t\tthrow new Error(`\"formatRFC3966()\" expects \"number\" to be in E.164 format.`)\n\t}\n\treturn `tel:${number}${ext ? ';ext=' + ext : ''}`\n}","// This is a port of Google Android `libphonenumber`'s\n// `phonenumberutil.js` of December 31th, 2018.\n//\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\n\nimport matchesEntirely from './helpers/matchesEntirely.js'\nimport formatNationalNumberUsingFormat from './helpers/formatNationalNumberUsingFormat.js'\nimport Metadata, { getCountryCallingCode } from './metadata.js'\nimport getIddPrefix from './helpers/getIddPrefix.js'\nimport { formatRFC3966 } from './helpers/RFC3966.js'\n\nconst DEFAULT_OPTIONS = {\n\tformatExtension: (formattedNumber, extension, metadata) =\u003e `${formattedNumber}${metadata.ext()}${extension}`\n}\n\n/**\n * Formats a phone number.\n *\n * format(phoneNumberInstance, 'INTERNATIONAL', { ..., v2: true }, metadata)\n * format(phoneNumberInstance, 'NATIONAL', { ..., v2: true }, metadata)\n *\n * format({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL', { ... }, metadata)\n * format({ phone: '8005553535', country: 'RU' }, 'NATIONAL', undefined, metadata)\n *\n * @param  {object|PhoneNumber} input — If `options.v2: true` flag is passed, the `input` should be a `PhoneNumber` instance. Otherwise, it should be an object of shape `{ phone: '...', country: '...' }`.\n * @param  {string} format\n * @param  {object} [options]\n * @param  {object} metadataJson\n * @return {string}\n */\nexport default function formatNumber(input, format, options, metadataJson) {\n\t// Apply default options.\n\tif (options) {\n\t\t// Using ES6 \"rest spread\" syntax here didn't work with `babel`/`istanbul`\n\t\t// for some weird reason: this line of code would cause the code coverage\n\t\t// to show as not 100%. That's because `babel`/`istanbul`, for some weird reason,\n\t\t// apparently doesn't know how to properly exclude Babel polyfills from code coverage.\n\t\t//\n\t\t// options = { ...DEFAULT_OPTIONS, ...options }\n\t\t//\n\t\toptions = merge({}, DEFAULT_OPTIONS, options)\n\t} else {\n\t\toptions = DEFAULT_OPTIONS\n\t}\n\n\tconst metadata = new Metadata(metadataJson)\n\n\t// Normally, the `input` object is supposed to be a `PhoneNumber` class instance.\n\t// Also, according to the `PhoneNumber` class source code, `country` can't be \"001\".\n\t// It means that normally `input.country` or `input.countryCallingCode` is supposed\n\t// to be present because either of the two is always required to exist in a `PhoneNumber` instance.\n\t// This means that realistically, it's gonna step into either the first `if`\n\t// or the following `else if`, and normally it won't even reach the legacy-compatibility\n\t// `else return input.phone || ''` part.\n\t// So normally, it won't ever return an empty string here.\n\tif (input.country \u0026\u0026 input.country !== '001') {\n\t\t// Validate `input.country`.\n\t\tif (!metadata.hasCountry(input.country)) {\n\t\t\tthrow new Error(`Unknown country: ${input.country}`)\n\t\t}\n\t\tmetadata.selectNumberingPlan(input.country)\n\t}\n\telse if (input.countryCallingCode) {\n\t\tmetadata.selectNumberingPlan(input.countryCallingCode)\n\t}\n\telse return input.phone || ''\n\n\tconst countryCallingCode = metadata.countryCallingCode()\n\n\tconst nationalNumber = options.v2 ? input.nationalNumber : input.phone\n\n\t// This variable should have been declared inside `case`s\n\t// but Babel has a bug and it says \"duplicate variable declaration\".\n\tlet number\n\n\tswitch (format) {\n\t\tcase 'NATIONAL':\n\t\t\t// Normally, the `input` object is supposed to be a `PhoneNumber` class instance,\n\t\t\t// and a `PhoneNumber` class instance is always required to have a `nationalNumber`.\n\t\t\t// This means that the `if (!nationalNumber)` below is just for legacy-compatibility\n\t\t\t// and it normally can't really happen, so normally it won't ever return an empty string here.\n\t\t\tif (!nationalNumber) {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\tnumber = formatNationalNumber(nationalNumber, input.carrierCode, 'NATIONAL', metadata, options)\n\t\t\treturn addExtension(number, input.ext, metadata, options.formatExtension)\n\n\t\tcase 'INTERNATIONAL':\n\t\t\t// Legacy argument support.\n\t\t\t// (`{ country: ..., phone: '' }`)\n\t\t\tif (!nationalNumber) {\n\t\t\t\treturn `+${countryCallingCode}`\n\t\t\t}\n\t\t\tnumber = formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata, options)\n\t\t\tnumber = `+${countryCallingCode} ${number}`\n\t\t\treturn addExtension(number, input.ext, metadata, options.formatExtension)\n\n\t\tcase 'E.164':\n\t\t\t// `E.164` doesn't define \"phone number extensions\".\n\t\t\treturn `+${countryCallingCode}${nationalNumber}`\n\n\t\tcase 'RFC3966':\n\t\t\treturn formatRFC3966({\n\t\t\t\tnumber: `+${countryCallingCode}${nationalNumber}`,\n\t\t\t\text: input.ext\n\t\t\t})\n\n\t\t// For reference, here's Google's IDD formatter:\n\t\t// https://github.com/google/libphonenumber/blob/32719cf74e68796788d1ca45abc85dcdc63ba5b9/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L1546\n\t\t// Not saying that this IDD formatter replicates it 1:1, but it seems to work.\n\t\t// Who would even need to format phone numbers in IDD format anyway?\n\t\tcase 'IDD':\n\t\t\t// If the required `fromCountry` parameter is not passed, it will return `undefined`.\n\t\t\tif (!options.fromCountry) {\n\t\t\t\treturn\n\t\t\t\t// throw new Error('`fromCountry` option not passed for IDD-prefixed formatting.')\n\t\t\t}\n\t\t\tconst formattedNumber = formatIDD(\n\t\t\t\tnationalNumber,\n\t\t\t\tinput.carrierCode,\n\t\t\t\tcountryCallingCode,\n\t\t\t\toptions.fromCountry,\n\t\t\t\tmetadata\n\t\t\t)\n\t\t\t// If the country of the phone number doesn't support IDD calling, it will return `undefined`.\n\t\t\tif (!formattedNumber) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\treturn addExtension(formattedNumber, input.ext, metadata, options.formatExtension)\n\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown \"format\" argument passed to \"formatNumber()\": \"${format}\"`)\n\t}\n}\n\nfunction formatNationalNumber(number, carrierCode, formatAs, metadata, options) {\n\tconst format = chooseFormatForNumber(metadata.formats(), number)\n\tif (!format) {\n\t\treturn number\n\t}\n\treturn formatNationalNumberUsingFormat(\n\t\tnumber,\n\t\tformat,\n\t\t{\n\t\t\tuseInternationalFormat: formatAs === 'INTERNATIONAL',\n\t\t\twithNationalPrefix: format.nationalPrefixIsOptionalWhenFormattingInNationalFormat() \u0026\u0026 (options \u0026\u0026 options.nationalPrefix === false) ? false : true,\n\t\t\tcarrierCode,\n\t\t\tmetadata\n\t\t}\n\t)\n}\n\nexport function chooseFormatForNumber(availableFormats, nationalNumber) {\n\t// Using a `for ... of` loop here didn't work with `babel`/`istanbul`:\n\t// for some weird reason, it showed code coverage less than 100%.\n\t// That's because `babel`/`istanbul`, for some weird reason,\n\t// apparently doesn't know how to properly exclude Babel polyfills from code coverage.\n\t//\n\t// for (const format of availableFormats) { ... }\n\t//\n\treturn pickFirstMatchingElement(availableFormats, (format) =\u003e {\n\t\t// Validate leading digits.\n\t\t// The test case for \"else path\" could be found by searching for\n\t\t// \"format.leadingDigitsPatterns().length === 0\".\n\t\tif (format.leadingDigitsPatterns().length \u003e 0) {\n\t\t\t// The last leading_digits_pattern is used here, as it is the most detailed\n\t\t\tconst lastLeadingDigitsPattern = format.leadingDigitsPatterns()[format.leadingDigitsPatterns().length - 1]\n\t\t\t// If leading digits don't match then move on to the next phone number format\n\t\t\tif (nationalNumber.search(lastLeadingDigitsPattern) !== 0) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\t// Check that the national number matches the phone number format regular expression\n\t\treturn matchesEntirely(nationalNumber, format.pattern())\n\t})\n}\n\nfunction addExtension(formattedNumber, ext, metadata, formatExtension) {\n\treturn ext ? formatExtension(formattedNumber, ext, metadata) : formattedNumber\n}\n\nfunction formatIDD(\n\tnationalNumber,\n\tcarrierCode,\n\tcountryCallingCode,\n\tfromCountry,\n\tmetadata\n) {\n\tconst fromCountryCallingCode = getCountryCallingCode(fromCountry, metadata.metadata)\n\t// When calling within the same country calling code.\n\tif (fromCountryCallingCode === countryCallingCode) {\n\t\tconst formattedNumber = formatNationalNumber(nationalNumber, carrierCode, 'NATIONAL', metadata)\n\t\t// For NANPA regions, return the national format for these regions\n\t\t// but prefix it with the country calling code.\n\t\tif (countryCallingCode === '1') {\n\t\t\treturn countryCallingCode + ' ' + formattedNumber\n\t\t}\n\t\t// If regions share a country calling code, the country calling code need\n\t\t// not be dialled. This also applies when dialling within a region, so this\n\t\t// if clause covers both these cases. Technically this is the case for\n\t\t// dialling from La Reunion to other overseas departments of France (French\n\t\t// Guiana, Martinique, Guadeloupe), but not vice versa - so we don't cover\n\t\t// this edge case for now and for those cases return the version including\n\t\t// country calling code. Details here:\n\t\t// http://www.petitfute.com/voyage/225-info-pratiques-reunion\n\t\t//\n\t\treturn formattedNumber\n\t}\n\tconst iddPrefix = getIddPrefix(fromCountry, undefined, metadata.metadata)\n\tif (iddPrefix) {\n\t\treturn `${iddPrefix} ${countryCallingCode} ${formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata)}`\n\t}\n}\n\nfunction merge(...objects) {\n\tlet i = 1\n\twhile (i \u003c objects.length) {\n\t\tif (objects[i]) {\n\t\t\tfor (const key in objects[i]) {\n\t\t\t\tobjects[0][key] = objects[i][key]\n\t\t\t}\n\t\t}\n\t\ti++\n\t}\n\treturn objects[0]\n}\n\nfunction pickFirstMatchingElement(elements, testFunction) {\n\tlet i = 0\n\twhile (i \u003c elements.length) {\n\t\tif (testFunction(elements[i])) {\n\t\t\treturn elements[i]\n\t\t}\n\t\ti++\n\t}\n}","import Metadata, { validateMetadata } from './metadata.js'\nimport isPossibleNumber from './isPossible.js'\nimport isValidNumber from './isValid.js'\nimport getNumberType from './helpers/getNumberType.js'\nimport getCountryAndCallingCodeFromOneOfThem from './helpers/getCountryAndCallingCodeFromOneOfThem.js'\nimport getPossibleCountriesForNumber from './helpers/getPossibleCountriesForNumber.js'\nimport extractCountryCallingCode from './helpers/extractCountryCallingCode.js'\nimport isObject from './helpers/isObject.js'\nimport formatNumber from './format.js'\n\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\n\nexport default class PhoneNumber {\n\t/**\n\t * @param  {string} countryOrCountryCallingCode\n\t * @param  {string} nationalNumber\n\t * @param  {object} metadata — Metadata JSON\n\t * @return {PhoneNumber}\n\t */\n\tconstructor(countryOrCountryCallingCode, nationalNumber, metadata) {\n\t\t// Validate `countryOrCountryCallingCode` argument.\n\t\tif (!countryOrCountryCallingCode) {\n\t\t\tthrow new TypeError('First argument is required')\n\t\t}\n\t\tif (typeof countryOrCountryCallingCode !== 'string') {\n\t\t\tthrow new TypeError('First argument must be a string')\n\t\t}\n\n\t\t// In case of public API use: `constructor(number, metadata)`.\n\t\t// Transform the arguments from `constructor(number, metadata)` to\n\t\t// `constructor(countryOrCountryCallingCode, nationalNumber, metadata)`.\n\t\tif (countryOrCountryCallingCode[0] === '+' \u0026\u0026 !nationalNumber) {\n\t\t\tthrow new TypeError('`metadata` argument not passed')\n\t\t}\n\t\tif (isObject(nationalNumber) \u0026\u0026 isObject(nationalNumber.countries)) {\n\t\t\tmetadata = nationalNumber\n\t\t\tconst e164Number = countryOrCountryCallingCode\n\t\t\tif (!E164_NUMBER_REGEXP.test(e164Number)) {\n\t\t\t\tthrow new Error('Invalid `number` argument passed: must consist of a \"+\" followed by digits')\n\t\t\t}\n\t\t\tconst { countryCallingCode, number } = extractCountryCallingCode(e164Number, undefined, undefined, undefined, metadata)\n\t\t\tnationalNumber = number\n\t\t\tcountryOrCountryCallingCode = countryCallingCode\n\t\t\tif (!nationalNumber) {\n\t\t\t\tthrow new Error('Invalid `number` argument passed: too short')\n\t\t\t}\n\t\t}\n\n\t\t// Validate `nationalNumber` argument.\n\t\tif (!nationalNumber) {\n\t\t\tthrow new TypeError('`nationalNumber` argument is required')\n\t\t}\n\t\tif (typeof nationalNumber !== 'string') {\n\t\t\tthrow new TypeError('`nationalNumber` argument must be a string')\n\t\t}\n\n\t\t// Validate `metadata` argument.\n\t\tvalidateMetadata(metadata)\n\n\t\t// Initialize properties.\n\t\tconst { country, callingCode: countryCallingCode } = getCountryAndCallingCodeFromOneOfThem(\n\t\t\tcountryOrCountryCallingCode,\n\t\t\tmetadata\n\t\t)\n\t\tthis.country = country\n\t\tthis.countryCallingCode = countryCallingCode\n\t\tthis.nationalNumber = nationalNumber\n\t\tthis.number = '+' + this.countryCallingCode + this.nationalNumber\n\t\t// Exclude `metadata` property output from `PhoneNumber.toString()`\n\t\t// so that it doesn't clutter the console output of Node.js.\n\t\t// Previously, when Node.js did `console.log(new PhoneNumber(...))`,\n\t\t// it would output the whole internal structure of the `metadata` object.\n\t\tthis.getMetadata = () =\u003e metadata\n\t}\n\n\tsetExt(ext) {\n\t\tthis.ext = ext\n\t}\n\n\tgetPossibleCountries() {\n\t\tif (this.country) {\n\t\t\treturn [this.country]\n\t\t}\n\t\treturn getPossibleCountriesForNumber(\n\t\t\tthis.countryCallingCode,\n\t\t\tthis.nationalNumber,\n\t\t\tthis.getMetadata()\n\t\t)\n\t}\n\n\tisPossible() {\n\t\treturn isPossibleNumber(this, { v2: true }, this.getMetadata())\n\t}\n\n\tisValid() {\n\t\treturn isValidNumber(this, { v2: true }, this.getMetadata())\n\t}\n\n\tisNonGeographic() {\n\t\tconst metadata = new Metadata(this.getMetadata())\n\t\treturn metadata.isNonGeographicCallingCode(this.countryCallingCode)\n\t}\n\n\tisEqual(phoneNumber) {\n\t\treturn this.number === phoneNumber.number \u0026\u0026 this.ext === phoneNumber.ext\n\t}\n\n\t// `validateLength()` method was originally meant to be an equivalent for `validatePhoneNumberLength()`.\n\t//\n\t// Later, it became apparent that it's not really a true equivalent.\n\t// The reason is that a `PhoneNumber` instance is not created\n\t// when the phone number string is too short for it to be considered a valid phone number:\n\t// * When there must be at least 2 national (significant) number digits: `\"1\"`.\n  // * When the country calling code part of an international number is incomplete: `\"+12\"`.\n\t//\n\t// So leaving this `validateLength()` method here would suggest a hidden anti-pattern\n\t// of using it instead of `validatePhoneNumberLength()` while ignoring\n\t// the \"too short to be even possible\" case from phone number length validation.\n\t// And ignoring that case wouldn't make any sense in a real-world application\n\t// because it would still be a valid case that should be handled.\n\t//\n\t// Because of that, this method was eventually commented out in order to not introduce\n\t// that kind of an anti-pattern.\n\t//\n\t// validateLength() {\n\t// \tconst result = checkNumberLength(\n\t// \t\tthis.nationalNumber,\n\t// \t\tundefined,\n\t// \t\tthis.getMetadata()\n\t// \t)\n\t// \tif (result !== 'IS_POSSIBLE') {\n\t// \t\treturn result\n\t// \t}\n\t// }\n\n\tgetType() {\n\t\treturn getNumberType(this, { v2: true }, this.getMetadata())\n\t}\n\n\tformat(format, options) {\n\t\treturn formatNumber(\n\t\t\tthis,\n\t\t\tformat,\n\t\t\toptions ? { ...options, v2: true } : { v2: true },\n\t\t\tthis.getMetadata()\n\t\t)\n\t}\n\n\tformatNational(options) {\n\t\treturn this.format('NATIONAL', options)\n\t}\n\n\tformatInternational(options) {\n\t\treturn this.format('INTERNATIONAL', options)\n\t}\n\n\tgetURI(options) {\n\t\treturn this.format('RFC3966', options)\n\t}\n}\n\nconst E164_NUMBER_REGEXP = /^\\+\\d+$/","// https://stackoverflow.com/a/46971044/970769\n// \"Breaking changes in Typescript 2.1\"\n// \"Extending built-ins like Error, Array, and Map may no longer work.\"\n// \"As a recommendation, you can manually adjust the prototype immediately after any super(...) calls.\"\n// https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\nexport default class ParseError extends Error {\n  constructor(code) {\n    super(code)\n    // Set the prototype explicitly.\n    // Any subclass of FooError will have to manually set the prototype as well.\n    Object.setPrototypeOf(this, ParseError.prototype)\n    this.name = this.constructor.name\n  }\n}","import createExtensionPattern from './createExtensionPattern.js'\n\n// Regexp of all known extension prefixes used by different regions followed by\n// 1 or more valid digits, for use when parsing.\nconst EXTN_PATTERN = new RegExp('(?:' + createExtensionPattern() + ')$', 'i')\n\n// Strips any extension (as in, the part of the number dialled after the call is\n// connected, usually indicated with extn, ext, x or similar) from the end of\n// the number, and returns it.\nexport default function extractExtension(number) {\n\tconst start = number.search(EXTN_PATTERN)\n\tif (start \u003c 0) {\n\t\treturn {}\n\t}\n\t// If we find a potential extension, and the number preceding this is a viable\n\t// number, we assume it is an extension.\n\tconst numberWithoutExtension = number.slice(0, start)\n\tconst matches = number.match(EXTN_PATTERN)\n\tlet i = 1\n\twhile (i \u003c matches.length) {\n\t\tif (matches[i]) {\n\t\t\treturn {\n\t\t\t\tnumber: numberWithoutExtension,\n\t\t\t\text: matches[i]\n\t\t\t}\n\t\t}\n\t\ti++\n\t}\n}","// These mappings map a character (key) to a specific digit that should\n// replace it for normalization purposes. Non-European digits that\n// may be used in phone numbers are mapped to a European equivalent.\n//\n// E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\n//\nexport const DIGITS = {\n\t'0': '0',\n\t'1': '1',\n\t'2': '2',\n\t'3': '3',\n\t'4': '4',\n\t'5': '5',\n\t'6': '6',\n\t'7': '7',\n\t'8': '8',\n\t'9': '9',\n\t'\\uFF10': '0', // Fullwidth digit 0\n\t'\\uFF11': '1', // Fullwidth digit 1\n\t'\\uFF12': '2', // Fullwidth digit 2\n\t'\\uFF13': '3', // Fullwidth digit 3\n\t'\\uFF14': '4', // Fullwidth digit 4\n\t'\\uFF15': '5', // Fullwidth digit 5\n\t'\\uFF16': '6', // Fullwidth digit 6\n\t'\\uFF17': '7', // Fullwidth digit 7\n\t'\\uFF18': '8', // Fullwidth digit 8\n\t'\\uFF19': '9', // Fullwidth digit 9\n\t'\\u0660': '0', // Arabic-indic digit 0\n\t'\\u0661': '1', // Arabic-indic digit 1\n\t'\\u0662': '2', // Arabic-indic digit 2\n\t'\\u0663': '3', // Arabic-indic digit 3\n\t'\\u0664': '4', // Arabic-indic digit 4\n\t'\\u0665': '5', // Arabic-indic digit 5\n\t'\\u0666': '6', // Arabic-indic digit 6\n\t'\\u0667': '7', // Arabic-indic digit 7\n\t'\\u0668': '8', // Arabic-indic digit 8\n\t'\\u0669': '9', // Arabic-indic digit 9\n\t'\\u06F0': '0', // Eastern-Arabic digit 0\n\t'\\u06F1': '1', // Eastern-Arabic digit 1\n\t'\\u06F2': '2', // Eastern-Arabic digit 2\n\t'\\u06F3': '3', // Eastern-Arabic digit 3\n\t'\\u06F4': '4', // Eastern-Arabic digit 4\n\t'\\u06F5': '5', // Eastern-Arabic digit 5\n\t'\\u06F6': '6', // Eastern-Arabic digit 6\n\t'\\u06F7': '7', // Eastern-Arabic digit 7\n\t'\\u06F8': '8', // Eastern-Arabic digit 8\n\t'\\u06F9': '9'  // Eastern-Arabic digit 9\n}\n\nexport function parseDigit(character) {\n\treturn DIGITS[character]\n}\n\n/**\n * Parses phone number digits from a string.\n * Drops all punctuation leaving only digits.\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\n * @param  {string} string\n * @return {string}\n * @example\n * ```js\n * parseDigits('8 (800) 555')\n * // Outputs '8800555'.\n * ```\n */\nexport default function parseDigits(string) {\n\tlet result = ''\n\t// Using `.split('')` here instead of normal `for ... of`\n\t// because the importing application doesn't neccessarily include an ES6 polyfill.\n\t// The `.split('')` approach discards \"exotic\" UTF-8 characters\n\t// (the ones consisting of four bytes) but digits\n\t// (including non-European ones) don't fall into that range\n\t// so such \"exotic\" characters would be discarded anyway.\n\tfor (const character of string.split('')) {\n\t\tconst digit = parseDigit(character)\n\t\tif (digit) {\n\t\t\tresult += digit\n\t\t}\n\t}\n\treturn result\n}","import { parseDigit } from './helpers/parseDigits.js'\n\n/**\n * Parses phone number characters from a string.\n * Drops all punctuation leaving only digits and the leading `+` sign (if any).\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\n * @param  {string} string\n * @return {string}\n * @example\n * ```js\n * // Outputs '8800555'.\n * parseIncompletePhoneNumber('8 (800) 555')\n * // Outputs '+7800555'.\n * parseIncompletePhoneNumber('+7 800 555')\n * ```\n */\nexport default function parseIncompletePhoneNumber(string) {\n\tlet result = ''\n\t// Using `.split('')` here instead of normal `for ... of`\n\t// because the importing application doesn't neccessarily include an ES6 polyfill.\n\t// The `.split('')` approach discards \"exotic\" UTF-8 characters\n\t// (the ones consisting of four bytes) but digits\n\t// (including non-European ones) don't fall into that range\n\t// so such \"exotic\" characters would be discarded anyway.\n\tfor (const character of string.split('')) {\n\t\tresult += parsePhoneNumberCharacter(character, result) || ''\n\t}\n\treturn result\n}\n\n/**\n * Parses next character while parsing phone number digits (including a `+`)\n * from text: discards everything except `+` and digits, and `+` is only allowed\n * at the start of a phone number.\n * For example, is used in `react-phone-number-input` where it uses\n * [`input-format`](https://gitlab.com/catamphetamine/input-format).\n * @param  {string} character - Yet another character from raw input string.\n * @param  {string?} prevParsedCharacters - Previous parsed characters.\n * @param  {function?} eventListener - An optional \"on event\" function.\n * @return {string?} The parsed character.\n */\nexport function parsePhoneNumberCharacter(character, prevParsedCharacters, eventListener) {\n\t// Only allow a leading `+`.\n\tif (character === '+') {\n\t\t// If this `+` is not the first parsed character\n\t\t// then discard it.\n\t\tif (prevParsedCharacters) {\n\t\t\t// `eventListener` argument was added to this `export`ed function on Dec 26th, 2023.\n\t\t\t// Any 3rd-party code that used to `import` and call this function before that\n\t\t\t// won't be passing any `eventListener` argument.\n\t\t\t//\n\t\t\t// The addition of the `eventListener` argument was to fix the slightly-weird behavior\n\t\t\t// of parsing an input string when the user inputs something like `\"2+7\"\n\t\t\t// https://github.com/catamphetamine/react-phone-number-input/issues/437\n\t\t\t//\n\t\t\t// If the parser encounters an unexpected `+` in a string being parsed\n\t\t\t// then it simply discards that out-of-place `+` and any following characters.\n\t\t\t//\n\t\t\tif (typeof eventListener === 'function') {\n\t\t\t\teventListener('end')\n\t\t\t}\n\t\t\treturn\n\t\t}\n\t\treturn '+'\n\t}\n\t// Allow digits.\n\treturn parseDigit(character)\n}","// When phone numbers are written in `RFC3966` format — `\"tel:+12133734253\"` —\n// they can have their \"calling code\" part written separately in a `phone-context` parameter.\n// Example: `\"tel:12133734253;phone-context=+1\"`.\n// This function parses the full phone number from the local number and the `phone-context`\n// when the `phone-context` contains a `+` sign.\n\nimport {\n  VALID_DIGITS,\n  // PLUS_CHARS\n} from '../constants.js'\n\nexport const PLUS_SIGN = '+'\n\nconst RFC3966_VISUAL_SEPARATOR_ = '[\\\\-\\\\.\\\\(\\\\)]?'\n\nconst RFC3966_PHONE_DIGIT_ = '(' + '[' + VALID_DIGITS + ']' + '|' + RFC3966_VISUAL_SEPARATOR_ + ')'\n\nconst RFC3966_GLOBAL_NUMBER_DIGITS_ =\n\t'^' +\n\t'\\\\' +\n\tPLUS_SIGN +\n\tRFC3966_PHONE_DIGIT_ +\n\t'*' +\n\t'[' + VALID_DIGITS +  ']' +\n\tRFC3966_PHONE_DIGIT_ +\n\t'*' +\n\t'$'\n\n/**\n * Regular expression of valid global-number-digits for the phone-context\n * parameter, following the syntax defined in RFC3966.\n */\nconst RFC3966_GLOBAL_NUMBER_DIGITS_PATTERN_ = new RegExp(RFC3966_GLOBAL_NUMBER_DIGITS_, 'g')\n\n// In this port of Google's library, we don't accept alpha characters in phone numbers.\n// const ALPHANUM_ = VALID_ALPHA_ + VALID_DIGITS\nconst ALPHANUM_ = VALID_DIGITS\n\nconst RFC3966_DOMAINLABEL_ = '[' + ALPHANUM_ + ']+((\\\\-)*[' + ALPHANUM_ + '])*'\n\nconst VALID_ALPHA_ = 'a-zA-Z'\nconst RFC3966_TOPLABEL_ = '[' + VALID_ALPHA_ + ']+((\\\\-)*[' + ALPHANUM_ + '])*'\n\nconst RFC3966_DOMAINNAME_ = '^(' + RFC3966_DOMAINLABEL_ + '\\\\.)*' + RFC3966_TOPLABEL_ + '\\\\.?$'\n\n/**\n * Regular expression of valid domainname for the phone-context parameter,\n * following the syntax defined in RFC3966.\n */\nconst RFC3966_DOMAINNAME_PATTERN_ = new RegExp(RFC3966_DOMAINNAME_, 'g')\n\nexport const RFC3966_PREFIX_ = 'tel:'\nexport const RFC3966_PHONE_CONTEXT_ = ';phone-context='\nexport const RFC3966_ISDN_SUBADDRESS_ = ';isub='\n\n/**\n * Extracts the value of the phone-context parameter of `numberToExtractFrom`,\n * following the syntax defined in RFC3966.\n *\n * @param {string} numberToExtractFrom\n * @return {string|null} the extracted string (possibly empty), or `null` if no phone-context parameter is found.\n */\nexport default function extractPhoneContext(numberToExtractFrom) {\n\tconst indexOfPhoneContext = numberToExtractFrom.indexOf(RFC3966_PHONE_CONTEXT_)\n\t// If no phone-context parameter is present\n\tif (indexOfPhoneContext \u003c 0) {\n\t\treturn null\n\t}\n\n\tconst phoneContextStart = indexOfPhoneContext + RFC3966_PHONE_CONTEXT_.length\n\t// If phone-context parameter is empty\n\tif (phoneContextStart \u003e= numberToExtractFrom.length) {\n\t\treturn ''\n\t}\n\n\tconst phoneContextEnd = numberToExtractFrom.indexOf(';', phoneContextStart)\n\t// If phone-context is not the last parameter\n\tif (phoneContextEnd \u003e= 0) {\n\t\treturn numberToExtractFrom.substring(phoneContextStart, phoneContextEnd)\n\t} else {\n\t\treturn numberToExtractFrom.substring(phoneContextStart)\n\t}\n}\n\n/**\n * Returns whether the value of phoneContext follows the syntax defined in RFC3966.\n *\n * @param {string|null} phoneContext\n * @return {boolean}\n */\nexport function isPhoneContextValid(phoneContext) {\n\tif (phoneContext === null) {\n\t\treturn true\n\t}\n\n\tif (phoneContext.length === 0) {\n\t\treturn false\n\t}\n\n\t// Does phone-context value match pattern of global-number-digits or domainname.\n\treturn RFC3966_GLOBAL_NUMBER_DIGITS_PATTERN_.test(phoneContext) ||\n\t\tRFC3966_DOMAINNAME_PATTERN_.test(phoneContext)\n}","import extractPhoneContext, {\n\tisPhoneContextValid,\n\tPLUS_SIGN,\n\tRFC3966_PREFIX_,\n\tRFC3966_PHONE_CONTEXT_,\n\tRFC3966_ISDN_SUBADDRESS_\n} from './extractPhoneContext.js'\n\nimport ParseError from '../ParseError.js'\n\n/**\n * @param  {string} numberToParse\n * @param  {string} nationalNumber\n * @return {}\n */\nexport default function extractFormattedPhoneNumberFromPossibleRfc3966NumberUri(numberToParse, {\n\textractFormattedPhoneNumber\n}) {\n\tconst phoneContext = extractPhoneContext(numberToParse)\n\tif (!isPhoneContextValid(phoneContext)) {\n\t\tthrow new ParseError('NOT_A_NUMBER')\n\t}\n\n\tlet phoneNumberString\n\n\tif (phoneContext === null) {\n\t\t// Extract a possible number from the string passed in.\n\t\t// (this strips leading characters that could not be the start of a phone number)\n\t\tphoneNumberString = extractFormattedPhoneNumber(numberToParse) || ''\n\t} else {\n\t\tphoneNumberString = ''\n\n\t\t// If the phone context contains a phone number prefix, we need to capture\n\t\t// it, whereas domains will be ignored.\n\t\tif (phoneContext.charAt(0) === PLUS_SIGN) {\n\t\t\tphoneNumberString += phoneContext\n\t\t}\n\n\t\t// Now append everything between the \"tel:\" prefix and the phone-context.\n\t\t// This should include the national number, an optional extension or\n\t\t// isdn-subaddress component. Note we also handle the case when \"tel:\" is\n\t\t// missing, as we have seen in some of the phone number inputs.\n\t\t// In that case, we append everything from the beginning.\n\t\tconst indexOfRfc3966Prefix = numberToParse.indexOf(RFC3966_PREFIX_)\n\t\tlet indexOfNationalNumber\n\t\t// RFC 3966 \"tel:\" prefix is preset at this stage because\n\t\t// `isPhoneContextValid()` requires it to be present.\n\t\t/* istanbul ignore else */\n\t\tif (indexOfRfc3966Prefix \u003e= 0) {\n\t\t\tindexOfNationalNumber = indexOfRfc3966Prefix + RFC3966_PREFIX_.length\n\t\t} else {\n\t\t\tindexOfNationalNumber = 0\n\t\t}\n\t\tconst indexOfPhoneContext = numberToParse.indexOf(RFC3966_PHONE_CONTEXT_)\n\t\tphoneNumberString += numberToParse.substring(indexOfNationalNumber, indexOfPhoneContext)\n\t}\n\n\t// Delete the isdn-subaddress and everything after it if it is present.\n\t// Note extension won't appear at the same time with isdn-subaddress\n\t// according to paragraph 5.3 of the RFC3966 spec.\n\tconst indexOfIsdn = phoneNumberString.indexOf(RFC3966_ISDN_SUBADDRESS_)\n\tif (indexOfIsdn \u003e 0) {\n\t\tphoneNumberString = phoneNumberString.substring(0, indexOfIsdn)\n\t}\n\t// If both phone context and isdn-subaddress are absent but other\n\t// parameters are present, the parameters are left in nationalNumber.\n\t// This is because we are concerned about deleting content from a potential\n\t// number string when there is no strong evidence that the number is\n\t// actually written in RFC3966.\n\n\tif (phoneNumberString !== '') {\n\t\treturn phoneNumberString\n\t}\n}","// This is a port of Google Android `libphonenumber`'s\n// `phonenumberutil.js` of December 31th, 2018.\n//\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\n\nimport {\n\tVALID_DIGITS,\n\tPLUS_CHARS,\n\tMIN_LENGTH_FOR_NSN,\n\tMAX_LENGTH_FOR_NSN\n} from './constants.js'\n\nimport ParseError from './ParseError.js'\nimport Metadata from './metadata.js'\nimport isViablePhoneNumber, { isViablePhoneNumberStart } from './helpers/isViablePhoneNumber.js'\nimport extractExtension from './helpers/extension/extractExtension.js'\nimport parseIncompletePhoneNumber from './parseIncompletePhoneNumber.js'\nimport getCountryCallingCode from './getCountryCallingCode.js'\nimport { isPossibleNumber } from './isPossible.js'\n// import { parseRFC3966 } from './helpers/RFC3966.js'\nimport PhoneNumber from './PhoneNumber.js'\nimport matchesEntirely from './helpers/matchesEntirely.js'\nimport extractCountryCallingCode from './helpers/extractCountryCallingCode.js'\nimport extractNationalNumber from './helpers/extractNationalNumber.js'\n// import stripIddPrefix from './helpers/stripIddPrefix.js'\nimport getCountryByCallingCode from './helpers/getCountryByCallingCode.js'\nimport extractFormattedPhoneNumberFromPossibleRfc3966NumberUri from './helpers/extractFormattedPhoneNumberFromPossibleRfc3966NumberUri.js'\n\n// We don't allow input strings for parsing to be longer than 250 chars.\n// This prevents malicious input from consuming CPU.\nconst MAX_INPUT_STRING_LENGTH = 250\n\n// This consists of the plus symbol, digits, and arabic-indic digits.\nconst PHONE_NUMBER_START_PATTERN = new RegExp('[' + PLUS_CHARS + VALID_DIGITS + ']')\n\n// Regular expression of trailing characters that we want to remove.\n// A trailing `#` is sometimes used when writing phone numbers with extensions in US.\n// Example: \"+1 (645) 123 1234-910#\" number has extension \"910\".\nconst AFTER_PHONE_NUMBER_END_PATTERN = new RegExp('[^' + VALID_DIGITS + '#' + ']+$')\n\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\n\n// Examples:\n//\n// ```js\n// parse('8 (800) 555-35-35', 'RU')\n// parse('8 (800) 555-35-35', 'RU', metadata)\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } })\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } }, metadata)\n// parse('+7 800 555 35 35')\n// parse('+7 800 555 35 35', metadata)\n// ```\n//\n\n/**\n * Parses a phone number.\n *\n * parse('123456789', { defaultCountry: 'RU', v2: true }, metadata)\n * parse('123456789', { defaultCountry: 'RU' }, metadata)\n * parse('123456789', undefined, metadata)\n *\n * @param  {string} input\n * @param  {object} [options]\n * @param  {object} metadataJson\n * @return {object|PhoneNumber?} If `options.v2: true` flag is passed, it returns a `PhoneNumber?` instance. Otherwise, returns an object of shape `{ phone: '...', country: '...' }` (or just `{}` if no phone number was parsed).\n */\nexport default function parse(text, options, metadataJson) {\n\t// If assigning the `{}` default value is moved to the arguments above,\n\t// code coverage would decrease for some weird reason.\n\toptions = options || {}\n\n\tconst metadata = new Metadata(metadataJson)\n\n\t// Validate `defaultCountry`.\n\tif (options.defaultCountry \u0026\u0026 !metadata.hasCountry(options.defaultCountry)) {\n\t\tif (options.v2) {\n\t\t\tthrow new ParseError('INVALID_COUNTRY')\n\t\t}\n\t\tthrow new Error(`Unknown country: ${options.defaultCountry}`)\n\t}\n\n\t// Parse the phone number.\n\tconst { number: formattedPhoneNumber, ext, error } = parseInput(text, options.v2, options.extract)\n\n\t// If the phone number is not viable then return nothing.\n\tif (!formattedPhoneNumber) {\n\t\tif (options.v2) {\n\t\t\tif (error === 'TOO_SHORT') {\n\t\t\t\tthrow new ParseError('TOO_SHORT')\n\t\t\t}\n\t\t\tthrow new ParseError('NOT_A_NUMBER')\n\t\t}\n\t\treturn {}\n\t}\n\n\tconst {\n\t\tcountry,\n\t\tnationalNumber,\n\t\tcountryCallingCode,\n\t\tcountryCallingCodeSource,\n\t\tcarrierCode\n\t} = parsePhoneNumber(\n\t\tformattedPhoneNumber,\n\t\toptions.defaultCountry,\n\t\toptions.defaultCallingCode,\n\t\t// If `country` is returned, its numbering plan will also be selected in `metadata`.\n\t\t// Otherwise, if `countryCallingCode` is returned, its numbering plan will also be selected in `metadata`.\n\t\t// Otherwise, if neither `country` nor `countryCallingCode` are returned, no numbering plan will be selected in `metadata`.\n\t\tmetadata\n\t)\n\n\tif (!metadata.hasSelectedNumberingPlan()) {\n\t\tif (options.v2) {\n\t\t\tthrow new ParseError('INVALID_COUNTRY')\n\t\t}\n\t\treturn {}\n\t}\n\n\t// Validate national (significant) number length.\n\tif (!nationalNumber || nationalNumber.length \u003c MIN_LENGTH_FOR_NSN) {\n\t\t// Won't throw here because the regexp already demands length \u003e 1.\n\t\t/* istanbul ignore if */\n\t\tif (options.v2) {\n\t\t\tthrow new ParseError('TOO_SHORT')\n\t\t}\n\t\t// Google's demo just throws an error in this case.\n\t\treturn {}\n\t}\n\n\t// Validate national (significant) number length.\n\t//\n\t// A sidenote:\n\t//\n\t// They say that sometimes national (significant) numbers\n\t// can be longer than `MAX_LENGTH_FOR_NSN` (e.g. in Germany).\n\t// https://github.com/googlei18n/libphonenumber/blob/7e1748645552da39c4e1ba731e47969d97bdb539/resources/phonenumber.proto#L36\n\t// Such numbers will just be discarded.\n\t//\n\tif (nationalNumber.length \u003e MAX_LENGTH_FOR_NSN) {\n\t\tif (options.v2) {\n\t\t\tthrow new ParseError('TOO_LONG')\n\t\t}\n\t\t// Google's demo just throws an error in this case.\n\t\treturn {}\n\t}\n\n\tif (options.v2) {\n\t\tconst phoneNumber = new PhoneNumber(\n\t\t\tcountryCallingCode,\n\t\t\tnationalNumber,\n\t\t\tmetadata.metadata\n\t\t)\n\t\tif (country) {\n\t\t\tphoneNumber.country = country\n\t\t}\n\t\tif (carrierCode) {\n\t\t\tphoneNumber.carrierCode = carrierCode\n\t\t}\n\t\tif (ext) {\n\t\t\tphoneNumber.ext = ext\n\t\t}\n\t\tphoneNumber.__countryCallingCodeSource = countryCallingCodeSource\n\t\treturn phoneNumber\n\t}\n\n\t// Check if national phone number pattern matches the number.\n\t// National number pattern is different for each country,\n\t// even for those ones which are part of the \"NANPA\" group.\n\tconst valid = (options.extended ? metadata.hasSelectedNumberingPlan() : country) ?\n\t\tmatchesEntirely(nationalNumber, metadata.nationalNumberPattern()) :\n\t\tfalse\n\n\tif (!options.extended) {\n\t\treturn valid ? result(country, nationalNumber, ext) : {}\n\t}\n\n\t// isInternational: countryCallingCode !== undefined\n\n\treturn {\n\t\tcountry,\n\t\tcountryCallingCode,\n\t\tcarrierCode,\n\t\tvalid,\n\t\tpossible: valid ? true : (\n\t\t\toptions.extended === true \u0026\u0026\n\t\t\tmetadata.possibleLengths() \u0026\u0026\n\t\t\tisPossibleNumber(nationalNumber, metadata) ? true : false\n\t\t),\n\t\tphone: nationalNumber,\n\t\text\n\t}\n}\n\n/**\n * Extracts a formatted phone number from text.\n * Doesn't guarantee that the extracted phone number\n * is a valid phone number (for example, doesn't validate its length).\n * @param  {string} text\n * @param  {boolean} [extract] — If `false`, then will parse the entire `text` as a phone number.\n * @param  {boolean} [throwOnError] — By default, it won't throw if the text is too long.\n * @return {string}\n * @example\n * // Returns \"(213) 373-4253\".\n * extractFormattedPhoneNumber(\"Call (213) 373-4253 for assistance.\")\n */\nfunction extractFormattedPhoneNumber(text, extract, throwOnError) {\n\tif (!text) {\n\t\treturn\n\t}\n\tif (text.length \u003e MAX_INPUT_STRING_LENGTH) {\n\t\tif (throwOnError) {\n\t\t\tthrow new ParseError('TOO_LONG')\n\t\t}\n\t\treturn\n\t}\n\tif (extract === false) {\n\t\treturn text\n\t}\n\t// Attempt to extract a possible number from the string passed in\n\tconst startsAt = text.search(PHONE_NUMBER_START_PATTERN)\n\tif (startsAt \u003c 0) {\n\t\treturn\n\t}\n\treturn text\n\t\t// Trim everything to the left of the phone number\n\t\t.slice(startsAt)\n\t\t// Remove trailing non-numerical characters\n\t\t.replace(AFTER_PHONE_NUMBER_END_PATTERN, '')\n}\n\n/**\n * @param  {string} text - Input.\n * @param  {boolean} v2 - Legacy API functions don't pass `v2: true` flag.\n * @param  {boolean} [extract] - Whether to extract a phone number from `text`, or attempt to parse the entire text as a phone number.\n * @return {object} `{ ?number, ?ext }`.\n */\nfunction parseInput(text, v2, extract) {\n\t// // Parse RFC 3966 phone number URI.\n\t// if (text \u0026\u0026 text.indexOf('tel:') === 0) {\n\t// \treturn parseRFC3966(text)\n\t// }\n\t// let number = extractFormattedPhoneNumber(text, extract, v2)\n\tlet number = extractFormattedPhoneNumberFromPossibleRfc3966NumberUri(text, {\n\t\textractFormattedPhoneNumber: (text) =\u003e extractFormattedPhoneNumber(text, extract, v2)\n\t})\n\t// If the phone number is not viable, then abort.\n\tif (!number) {\n\t\treturn {}\n\t}\n\tif (!isViablePhoneNumber(number)) {\n\t\tif (isViablePhoneNumberStart(number)) {\n\t\t\treturn { error: 'TOO_SHORT' }\n\t\t}\n\t\treturn {}\n\t}\n\t// Attempt to parse extension first, since it doesn't require region-specific\n\t// data and we want to have the non-normalised number here.\n\tconst withExtensionStripped = extractExtension(number)\n\tif (withExtensionStripped.ext) {\n\t\treturn withExtensionStripped\n\t}\n\treturn { number }\n}\n\n/**\n * Creates `parse()` result object.\n */\nfunction result(country, nationalNumber, ext) {\n\tconst result = {\n\t\tcountry,\n\t\tphone: nationalNumber\n\t}\n\tif (ext) {\n\t\tresult.ext = ext\n\t}\n\treturn result\n}\n\n/**\n * Parses a viable phone number.\n * @param {string} formattedPhoneNumber — Example: \"(213) 373-4253\".\n * @param {string} [defaultCountry]\n * @param {string} [defaultCallingCode]\n * @param {Metadata} metadata — Metadata instance with no pre-selected numbering plan. If `country` is returned, its numbering plan will also be selected in `metadata`. Otherwise, if `countryCallingCode` is returned, its numbering plan will also be selected in `metadata`. Otherwise, if neither `country` nor `countryCallingCode` are returned, no numbering plan will be selected in `metadata`.\n * @return {object} Returns `{ country: string?, countryCallingCode: string?, nationalNumber: string? }`.\n */\nfunction parsePhoneNumber(\n\tformattedPhoneNumber,\n\tdefaultCountry,\n\tdefaultCallingCode,\n\tmetadata\n) {\n\t// Attempt to extract a calling code from a phone number.\n\t// * If the phone number is found to be \"international\":\n\t//   * It will attempt to identify the calling code part of it and whether that part is complete and valid.\n\t//     * If the calling code part is complete and valid, it will return two properties:\n\t//       that calling code part (without `+`) and the rest of the digits.\n\t//     * Otherwise, i.e. if the calling code part is incomplete or invalid,\n\t//       it will return an empty object.\n\t// * Otherwise, i.e. if the phone number is national, there's no callind code to extract\n\t//   so it will just return the originally-passed `number` string as the only property.\n\tlet {\n\t\t// `countryCallingCodeSource` tells how the returned calling code was extracted (if it was extracted).\n\t\tcountryCallingCodeSource,\n\t\t// `countryCallingCode` is the calling code that was extracted from the input phone number string.\n\t\tcountryCallingCode,\n\t\t// `number` is the originally passed `number` without the extracted calling code (and without a `+`).\n\t\t// If the calling code is present but incomplete or invalid, both `countryCallingCode` and `number`\n\t\t// will be returned as `undefined`.\n\t\tnumber\n\t} = extractCountryCallingCode(\n\t\tparseIncompletePhoneNumber(formattedPhoneNumber),\n\t\tundefined,\n\t\t// `defaultCountry` and `defaultCallingCode` are only used to detect\n\t\t// if it's an \"international\" phone number or not. They won't be used\n\t\t// to derive the resulting `countryCallingCode` from them, or anything like that.\n\t\tdefaultCountry,\n\t\tdefaultCallingCode,\n\t\tmetadata.metadata\n\t)\n\n\t// The exact country of the phone number\n\tlet country\n\n\t// If `formattedPhoneNumber` is passed in \"international\" format,\n\t// choose a country by `countryCallingCode`.\n\tif (countryCallingCode) {\n\t\tmetadata.selectNumberingPlan(countryCallingCode)\n\t}\n\t// Else, if `formattedPhoneNumber` is passed in \"national\" format,\n\t// then `number` is defined and `countryCallingCode` is `undefined`.\n\telse if (number \u0026\u0026 (defaultCountry || defaultCallingCode)) {\n\t\tif (defaultCountry) {\n\t\t\tcountry = defaultCountry\n\t\t\tmetadata.selectNumberingPlan(defaultCountry)\n\t\t\tcountryCallingCode = metadata.numberingPlan.callingCode()\n\t\t} else {\n\t\t\tmetadata.selectNumberingPlan(defaultCallingCode)\n\t\t\tcountryCallingCode = defaultCallingCode\n\t\t\t/* istanbul ignore if */\n\t\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n\t\t\t\tif (metadata.isNonGeographicCallingCode(countryCallingCode)) {\n\t\t\t\t\tcountry = '001'\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\telse return {}\n\n\t// At this point, `country` could be `undefined` but `countryCallingCode` is always defined.\n\t//\n\t// Also, if `country` is defined, its numbering plan is selected in `metadata`.\n\t// Otherwise, the numering plan for the `countryCallingCode` is selected in `metadata`.\n\n\tif (!number) {\n\t\treturn {\n\t\t\tcountryCallingCodeSource,\n\t\t\tcountryCallingCode\n\t\t}\n\t}\n\n\tconst {\n\t\tnationalNumber,\n\t\tcarrierCode\n\t} = extractNationalNumber(\n\t\tparseIncompletePhoneNumber(number),\n\t\tundefined,\n\t\tmetadata\n\t)\n\n\t// Sometimes there are several countries\n\t// corresponding to the same country phone code\n\t// (e.g. NANPA countries all having `1` country phone code).\n\t// Therefore, to reliably determine the exact country,\n\t// national (significant) number should have been parsed first.\n\t//\n\t// When `metadata.json` is generated, all \"ambiguous\" country phone codes\n\t// get their countries populated with the full set of\n\t// \"phone number type\" regular expressions.\n\t//\n\tconst exactCountry = getCountryByCallingCode(countryCallingCode, {\n\t\tnationalNumber,\n\t\tmetadata\n\t})\n\tif (exactCountry) {\n\t\tcountry = exactCountry\n\t\t/* istanbul ignore if */\n\t\tif (exactCountry === '001') {\n\t\t\t// Can't happen with `USE_NON_GEOGRAPHIC_COUNTRY_CODE` being `false`.\n\t\t\t// If `USE_NON_GEOGRAPHIC_COUNTRY_CODE` is set to `true` for some reason,\n\t\t\t// then remove the \"istanbul ignore if\".\n\t\t} else {\n\t\t\tmetadata.selectNumberingPlan(country)\n\t\t}\n\t}\n\n\treturn {\n\t\tcountry,\n\t\tcountryCallingCode,\n\t\tcountryCallingCodeSource,\n\t\tnationalNumber,\n\t\tcarrierCode\n\t}\n}","import parse from './parse.js'\n\nexport default function parsePhoneNumberWithError(text, options, metadata) {\n\treturn parse(text, { ...options, v2: true }, metadata)\n}","import isObject from './helpers/isObject.js'\n\n// Extracts the following properties from function arguments:\n// * input `text`\n// * `options` object\n// * `metadata` JSON\nexport default function normalizeArguments(args) {\n\tconst [arg_1, arg_2, arg_3, arg_4] = Array.prototype.slice.call(args)\n\n\tlet text\n\tlet options\n\tlet metadata\n\n\t// If the phone number is passed as a string.\n\t// `parsePhoneNumber('88005553535', ...)`.\n\tif (typeof arg_1 === 'string') {\n\t\ttext = arg_1\n\t}\n\telse throw new TypeError('A text for parsing must be a string.')\n\n\t// If \"default country\" argument is being passed then move it to `options`.\n\t// `parsePhoneNumber('88005553535', 'RU', [options], metadata)`.\n\tif (!arg_2 || typeof arg_2 === 'string')\n\t{\n\t\tif (arg_4) {\n\t\t\toptions = arg_3\n\t\t\tmetadata = arg_4\n\t\t} else {\n\t\t\toptions = undefined\n\t\t\tmetadata = arg_3\n\t\t}\n\n\t\tif (arg_2) {\n\t\t\toptions = { defaultCountry: arg_2, ...options }\n\t\t}\n\t}\n\t// `defaultCountry` is not passed.\n\t// Example: `parsePhoneNumber('+78005553535', [options], metadata)`.\n\telse if (isObject(arg_2))\n\t{\n\t\tif (arg_3) {\n\t\t\toptions  = arg_2\n\t\t\tmetadata = arg_3\n\t\t} else {\n\t\t\tmetadata = arg_2\n\t\t}\n\t}\n\telse throw new Error(`Invalid second argument: ${arg_2}`)\n\n\treturn {\n\t\ttext,\n\t\toptions,\n\t\tmetadata\n\t}\n}","import parsePhoneNumberWithError_ from './parsePhoneNumberWithError_.js'\nimport normalizeArguments from './normalizeArguments.js'\n\nexport default function parsePhoneNumberWithError() {\n\tconst { text, options, metadata } = normalizeArguments(arguments)\n\treturn parsePhoneNumberWithError_(text, options, metadata)\n}","import parsePhoneNumberWithError from './parsePhoneNumberWithError_.js'\nimport ParseError from './ParseError.js'\nimport { isSupportedCountry } from './metadata.js'\n\nexport default function parsePhoneNumber(text, options, metadata) {\n\t// Validate `defaultCountry`.\n\tif (options \u0026\u0026 options.defaultCountry \u0026\u0026 !isSupportedCountry(options.defaultCountry, metadata)) {\n\t\toptions = {\n\t\t\t...options,\n\t\t\tdefaultCountry: undefined\n\t\t}\n\t}\n\t// Parse phone number.\n\ttry {\n\t\treturn parsePhoneNumberWithError(text, options, metadata)\n\t} catch (error) {\n\t\t/* istanbul ignore else */\n\t\tif (error instanceof ParseError) {\n\t\t\t//\n\t\t} else {\n\t\t\tthrow error\n\t\t}\n\t}\n}\n","import normalizeArguments from './normalizeArguments.js'\nimport parsePhoneNumber_ from './parsePhoneNumber_.js'\n\nexport default function parsePhoneNumber() {\n\tconst { text, options, metadata } = normalizeArguments(arguments)\n\treturn parsePhoneNumber_(text, options, metadata)\n}\n","import normalizeArguments from './normalizeArguments.js'\nimport parsePhoneNumber from './parsePhoneNumber_.js'\n\nexport default function isValidPhoneNumber() {\n\tlet { text, options, metadata } = normalizeArguments(arguments)\n\toptions = {\n\t\t...options,\n\t\textract: false\n\t}\n\tconst phoneNumber = parsePhoneNumber(text, options, metadata)\n\treturn phoneNumber \u0026\u0026 phoneNumber.isValid() || false\n}","import normalizeArguments from './normalizeArguments.js'\nimport parsePhoneNumber from './parsePhoneNumber_.js'\n\nexport default function isPossiblePhoneNumber() {\n\tlet { text, options, metadata } = normalizeArguments(arguments)\n\toptions = {\n\t\t...options,\n\t\textract: false\n\t}\n\tconst phoneNumber = parsePhoneNumber(text, options, metadata)\n\treturn phoneNumber \u0026\u0026 phoneNumber.isPossible() || false\n}","import normalizeArguments from './normalizeArguments.js'\nimport parsePhoneNumberWithError from './parsePhoneNumberWithError_.js'\nimport ParseError from './ParseError.js'\nimport Metadata from './metadata.js'\nimport checkNumberLength from './helpers/checkNumberLength.js'\n\nexport default function validatePhoneNumberLength() {\n\tlet { text, options, metadata } = normalizeArguments(arguments)\n\toptions = {\n\t\t...options,\n\t\textract: false\n\t}\n\n\t// Parse phone number.\n\ttry {\n\t\tconst phoneNumber = parsePhoneNumberWithError(text, options, metadata)\n\t\tconst metadataInstance = new Metadata(metadata)\n\t\tmetadataInstance.selectNumberingPlan(phoneNumber.country || phoneNumber.countryCallingCode)\n\t\tconst result = checkNumberLength(phoneNumber.nationalNumber, undefined, metadataInstance)\n\t\tif (result !== 'IS_POSSIBLE') {\n\t\t\treturn result\n\t\t}\n\t} catch (error) {\n\t\t/* istanbul ignore else */\n\t\tif (error instanceof ParseError) {\n\t\t\treturn error.message\n\t\t} else {\n\t\t\tthrow error\n\t\t}\n\t}\n}","// https://medium.com/dsinjs/implementing-lru-cache-in-javascript-94ba6755cda9\n\nclass Node {\n  constructor(key, value, next = null, prev = null) {\n    this.key = key;\n    this.value = value;\n    this.next = next;\n    this.prev = prev;\n  }\n}\n\nexport default class LRUCache {\n  //set default limit of 10 if limit is not passed.\n  constructor(limit = 10) {\n    this.size = 0;\n    this.limit = limit;\n    this.head = null;\n    this.tail = null;\n    this.cache = {};\n  }\n\n  // Write Node to head of LinkedList\n  // update cache with Node key and Node reference\n  put(key, value){\n    this.ensureLimit();\n\n    if(!this.head){\n      this.head = this.tail = new Node(key, value);\n    }else{\n      const node = new Node(key, value, this.head);\n      this.head.prev = node;\n      this.head = node;\n    }\n\n    //Update the cache map\n    this.cache[key] = this.head;\n    this.size++;\n  }\n\n  // Read from cache map and make that node as new Head of LinkedList\n  get(key){\n    if(this.cache[key]){\n      const value = this.cache[key].value;\n\n      // node removed from it's position and cache\n      this.remove(key)\n      // write node again to the head of LinkedList to make it most recently used\n      this.put(key, value);\n\n      return value;\n    }\n\n    console.log(`Item not available in cache for key ${key}`);\n  }\n\n  ensureLimit(){\n    if(this.size === this.limit){\n      this.remove(this.tail.key)\n    }\n  }\n\n  remove(key){\n    const node = this.cache[key];\n\n    if(node.prev !== null){\n      node.prev.next = node.next;\n    }else{\n      this.head = node.next;\n    }\n\n    if(node.next !== null){\n      node.next.prev = node.prev;\n    }else{\n      this.tail = node.prev\n    }\n\n    delete this.cache[key];\n    this.size--;\n  }\n\n  clear() {\n    this.head = null;\n    this.tail = null;\n    this.size = 0;\n    this.cache = {};\n  }\n\n  // // Invokes the callback function with every node of the chain and the index of the node.\n  // forEach(fn) {\n  //   let node = this.head;\n  //   let counter = 0;\n  //   while (node) {\n  //     fn(node, counter);\n  //     node = node.next;\n  //     counter++;\n  //   }\n  // }\n\n  // // To iterate over LRU with a 'for...of' loop\n  // *[Symbol.iterator]() {\n  //   let node = this.head;\n  //   while (node) {\n  //     yield node;\n  //     node = node.next;\n  //   }\n  // }\n}","import LRUCache from './LRUCache.js'\n\n// A cache for frequently used country-specific regular expressions. Set to 32 to cover ~2-3\n// countries being used for the same doc with ~10 patterns for each country. Some pages will have\n// a lot more countries in use, but typically fewer numbers for each so expanding the cache for\n// that use-case won't have a lot of benefit.\nexport default class RegExpCache {\n\tconstructor(size) {\n\t\tthis.cache = new LRUCache(size)\n\t}\n\n\tgetPatternForRegExp(pattern) {\n\t\tlet regExp = this.cache.get(pattern)\n\t\tif (!regExp) {\n\t\t\tregExp = new RegExp('^' + pattern)\n\t\t\tthis.cache.put(pattern, regExp)\n\t\t}\n\t\treturn regExp\n\t}\n}","/** Returns a regular expression quantifier with an upper and lower limit. */\nexport function limit(lower, upper)\n{\n\tif ((lower \u003c 0) || (upper \u003c= 0) || (upper \u003c lower)) {\n\t\tthrow new TypeError()\n\t}\n\treturn `{${lower},${upper}}`\n}\n\n/**\n * Trims away any characters after the first match of {@code pattern} in {@code candidate},\n * returning the trimmed version.\n */\nexport function trimAfterFirstMatch(regexp, string)\n{\n\tconst index = string.search(regexp)\n\n\tif (index \u003e= 0) {\n\t\treturn string.slice(0, index)\n\t}\n\n\treturn string\n}\n\nexport function startsWith(string, substring)\n{\n\treturn string.indexOf(substring) === 0\n}\n\nexport function endsWith(string, substring)\n{\n\treturn string.indexOf(substring, string.length - substring.length) === string.length - substring.length\n}\n","// Javascript doesn't support UTF-8 regular expressions.\n// So mimicking them here.\n\n// Copy-pasted from `PhoneNumberMatcher.js`.\n\n/**\n * \"\\p{Z}\" is any kind of whitespace or invisible separator (\"Separator\").\n * http://www.regular-expressions.info/unicode.html\n * \"\\P{Z}\" is the reverse of \"\\p{Z}\".\n * \"\\p{N}\" is any kind of numeric character in any script (\"Number\").\n * \"\\p{Nd}\" is a digit zero through nine in any script except \"ideographic scripts\" (\"Decimal_Digit_Number\").\n * \"\\p{Sc}\" is a currency symbol (\"Currency_Symbol\").\n * \"\\p{L}\" is any kind of letter from any language (\"Letter\").\n * \"\\p{Mn}\" is \"non-spacing mark\".\n *\n * Javascript doesn't support Unicode Regular Expressions\n * so substituting it with this explicit set of characters.\n *\n * https://stackoverflow.com/questions/13210194/javascript-regex-equivalent-of-a-za-z-using-pl\n * https://github.com/danielberndt/babel-plugin-utf-8-regex/blob/master/src/transformer.js\n */\n\nconst _pZ = '\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000'\nexport const pZ = `[${_pZ}]`\nexport const PZ = `[^${_pZ}]`\n\nexport const _pN = '\\u0030-\\u0039\\u00B2\\u00B3\\u00B9\\u00BC-\\u00BE\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u09F4-\\u09F9\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0B72-\\u0B77\\u0BE6-\\u0BF2\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0CE6-\\u0CEF\\u0D66-\\u0D75\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F33\\u1040-\\u1049\\u1090-\\u1099\\u1369-\\u137C\\u16EE-\\u16F0\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19DA\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\u2070\\u2074-\\u2079\\u2080-\\u2089\\u2150-\\u2182\\u2185-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2CFD\\u3007\\u3021-\\u3029\\u3038-\\u303A\\u3192-\\u3195\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\uA620-\\uA629\\uA6E6-\\uA6EF\\uA830-\\uA835\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19'\n// const pN = `[${_pN}]`\n\nconst _pNd = '\\u0030-\\u0039\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19'\nexport const pNd = `[${_pNd}]`\n\nexport const _pL = '\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC'\nconst pL = `[${_pL}]`\nconst pL_regexp = new RegExp(pL)\n\nconst _pSc = '\\u0024\\u00A2-\\u00A5\\u058F\\u060B\\u09F2\\u09F3\\u09FB\\u0AF1\\u0BF9\\u0E3F\\u17DB\\u20A0-\\u20B9\\uA838\\uFDFC\\uFE69\\uFF04\\uFFE0\\uFFE1\\uFFE5\\uFFE6'\nconst pSc = `[${_pSc}]`\nconst pSc_regexp = new RegExp(pSc)\n\nconst _pMn = '\\u0300-\\u036F\\u0483-\\u0487\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08E4-\\u08FE\\u0900-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1DC0-\\u1DE6\\u1DFC-\\u1DFF\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302D\\u3099\\u309A\\uA66F\\uA674-\\uA67D\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE26'\nconst pMn = `[${_pMn}]`\nconst pMn_regexp = new RegExp(pMn)\n\nconst _InBasic_Latin = '\\u0000-\\u007F'\nconst _InLatin_1_Supplement = '\\u0080-\\u00FF'\nconst _InLatin_Extended_A = '\\u0100-\\u017F'\nconst _InLatin_Extended_Additional = '\\u1E00-\\u1EFF'\nconst _InLatin_Extended_B = '\\u0180-\\u024F'\nconst _InCombining_Diacritical_Marks = '\\u0300-\\u036F'\n\nconst latinLetterRegexp = new RegExp\n(\n\t'[' +\n\t_InBasic_Latin +\n\t_InLatin_1_Supplement +\n\t_InLatin_Extended_A +\n\t_InLatin_Extended_Additional +\n\t_InLatin_Extended_B +\n\t_InCombining_Diacritical_Marks +\n\t']'\n)\n\n/**\n * Helper method to determine if a character is a Latin-script letter or not.\n * For our purposes, combining marks should also return true since we assume\n * they have been added to a preceding Latin character.\n */\nexport function isLatinLetter(letter)\n{\n\t// Combining marks are a subset of non-spacing-mark.\n\tif (!pL_regexp.test(letter) \u0026\u0026 !pMn_regexp.test(letter)) {\n\t\treturn false\n\t}\n\n\treturn latinLetterRegexp.test(letter)\n}\n\nexport function isInvalidPunctuationSymbol(character)\n{\n\treturn character === '%' || pSc_regexp.test(character)\n}","import parsePhoneNumber from '../parsePhoneNumber.js'\n\n/**\n * Matches a phone number object against a phone number string.\n * @param  {string} phoneNumberString\n * @param  {PhoneNumber} phoneNumber\n * @param  {object} metadata — Metadata JSON\n * @return {'INVALID_NUMBER'|'NO_MATCH'|'SHORT_NSN_MATCH'|'NSN_MATCH'|'EXACT_MATCH'}\n */\nexport default function matchPhoneNumberStringAgainstPhoneNumber(phoneNumberString, phoneNumber, metadata) {\n\t// Parse `phoneNumberString`.\n\tlet phoneNumberStringContainsCallingCode = true\n\tlet parsedPhoneNumber = parsePhoneNumber(phoneNumberString, metadata)\n\tif (!parsedPhoneNumber) {\n\t\t// If `phoneNumberString` didn't contain a country calling code\n\t\t// then substitute it with the `phoneNumber`'s country calling code.\n\t\tphoneNumberStringContainsCallingCode = false\n\t\tparsedPhoneNumber = parsePhoneNumber(phoneNumberString, { defaultCallingCode: phoneNumber.countryCallingCode }, metadata)\n\t}\n\tif (!parsedPhoneNumber) {\n\t\treturn 'INVALID_NUMBER'\n\t}\n\n\t// Check that the extensions match.\n\tif (phoneNumber.ext) {\n\t\tif (parsedPhoneNumber.ext !== phoneNumber.ext) {\n\t\t\treturn 'NO_MATCH'\n\t\t}\n\t} else {\n\t\tif (parsedPhoneNumber.ext) {\n\t\t\treturn 'NO_MATCH'\n\t\t}\n\t}\n\n\t// Check that country calling codes match.\n\tif (phoneNumberStringContainsCallingCode) {\n\t\tif (phoneNumber.countryCallingCode !== parsedPhoneNumber.countryCallingCode) {\n\t\t\treturn 'NO_MATCH'\n\t\t}\n\t}\n\n\t// Check if the whole numbers match.\n\tif (phoneNumber.number === parsedPhoneNumber.number) {\n\t\tif (phoneNumberStringContainsCallingCode) {\n\t\t\treturn 'EXACT_MATCH'\n\t\t} else {\n\t\t\treturn 'NSN_MATCH'\n\t\t}\n\t}\n\n\t// Check if one national number is a \"suffix\" of the other.\n\tif (\n\t\tphoneNumber.nationalNumber.indexOf(parsedPhoneNumber.nationalNumber) === 0 ||\n\t\tparsedPhoneNumber.nationalNumber.indexOf(phoneNumber.nationalNumber) === 0\n\t) {\n\t\t// \"A SHORT_NSN_MATCH occurs if there is a difference because of the\n\t\t//  presence or absence of an 'Italian leading zero', the presence or\n\t\t//  absence of an extension, or one NSN being a shorter variant of the\n\t\t//  other.\"\n\t\treturn 'SHORT_NSN_MATCH'\n\t}\n\n\treturn 'NO_MATCH'\n}","import parseDigits from '../helpers/parseDigits.js'\nimport matchPhoneNumberStringAgainstPhoneNumber from './matchPhoneNumberStringAgainstPhoneNumber.js'\nimport Metadata from '../metadata.js'\nimport getCountryByCallingCode from '../helpers/getCountryByCallingCode.js'\nimport { chooseFormatForNumber } from '../format.js'\n\nimport {\n\tstartsWith,\n\tendsWith\n} from './util.js'\n\n/**\n * Leniency when finding potential phone numbers in text segments\n * The levels here are ordered in increasing strictness.\n */\nexport default\n{\n\t/**\n\t * Phone numbers accepted are \"possible\", but not necessarily \"valid\".\n\t */\n\tPOSSIBLE(phoneNumber, { candidate, metadata })\n\t{\n\t\treturn true\n\t},\n\n\t/**\n\t * Phone numbers accepted are \"possible\" and \"valid\".\n\t * Numbers written in national format must have their national-prefix\n\t * present if it is usually written for a number of this type.\n\t */\n\tVALID(phoneNumber, { candidate, defaultCountry, metadata })\n\t{\n\t\tif (\n\t\t\t!phoneNumber.isValid() ||\n\t\t\t!containsOnlyValidXChars(phoneNumber, candidate, metadata)\n\t\t)\n\t\t{\n\t\t\treturn false\n\t\t}\n\n\t\t// Skipped for simplicity.\n\t\t// return isNationalPrefixPresentIfRequired(phoneNumber, { defaultCountry, metadata })\n\t\treturn true\n\t},\n\n\t/**\n\t * Phone numbers accepted are \"valid\" and\n\t * are grouped in a possible way for this locale. For example, a US number written as\n\t * \"65 02 53 00 00\" and \"650253 0000\" are not accepted at this leniency level, whereas\n\t * \"650 253 0000\", \"650 2530000\" or \"6502530000\" are.\n\t * Numbers with more than one '/' symbol in the national significant number\n\t * are also dropped at this level.\n\t *\n\t * Warning: This level might result in lower coverage especially for regions outside of\n\t * country code \"+1\". If you are not sure about which level to use,\n\t * email the discussion group libphonenumber-discuss@googlegroups.com.\n\t */\n\tSTRICT_GROUPING(phoneNumber, { candidate, defaultCountry, metadata, regExpCache })\n\t{\n\t\tif (\n\t\t\t!phoneNumber.isValid() ||\n\t\t\t!containsOnlyValidXChars(phoneNumber, candidate, metadata) ||\n\t\t\tcontainsMoreThanOneSlashInNationalNumber(phoneNumber, candidate) ||\n\t\t\t!isNationalPrefixPresentIfRequired(phoneNumber, { defaultCountry, metadata })\n\t\t)\n\t\t{\n\t\t\treturn false\n\t\t}\n\n\t\treturn checkNumberGroupingIsValid\n\t\t(\n\t\t\tphoneNumber,\n\t\t\tcandidate,\n\t\t\tmetadata,\n\t\t\tallNumberGroupsRemainGrouped,\n\t\t\tregExpCache\n\t\t)\n\t},\n\n\t/**\n\t * Phone numbers accepted are \"valid\" and are grouped in the same way\n\t * that we would have formatted it, or as a single block.\n\t * For example, a US number written as \"650 2530000\" is not accepted\n\t * at this leniency level, whereas \"650 253 0000\" or \"6502530000\" are.\n\t * Numbers with more than one '/' symbol are also dropped at this level.\n\t *\n\t * Warning: This level might result in lower coverage especially for regions outside of\n\t * country code \"+1\". If you are not sure about which level to use, email the discussion group\n\t * libphonenumber-discuss@googlegroups.com.\n\t */\n\tEXACT_GROUPING(phoneNumber, { candidate, defaultCountry, metadata, regExpCache })\n\t{\n\t\tif (\n\t\t\t!phoneNumber.isValid() ||\n\t\t\t!containsOnlyValidXChars(phoneNumber, candidate, metadata) ||\n\t\t\tcontainsMoreThanOneSlashInNationalNumber(phoneNumber, candidate) ||\n\t\t\t!isNationalPrefixPresentIfRequired(phoneNumber, { defaultCountry, metadata })\n\t\t)\n\t\t{\n\t\t\treturn false\n\t\t}\n\n\t\treturn checkNumberGroupingIsValid\n\t\t(\n\t\t\tphoneNumber,\n\t\t\tcandidate,\n\t\t\tmetadata,\n\t\t\tallNumberGroupsAreExactlyPresent,\n\t\t\tregExpCache\n\t\t)\n\t}\n}\n\nfunction containsOnlyValidXChars(phoneNumber, candidate, metadata)\n{\n\t// The characters 'x' and 'X' can be (1) a carrier code, in which case they always precede the\n\t// national significant number or (2) an extension sign, in which case they always precede the\n\t// extension number. We assume a carrier code is more than 1 digit, so the first case has to\n\t// have more than 1 consecutive 'x' or 'X', whereas the second case can only have exactly 1 'x'\n\t// or 'X'. We ignore the character if it appears as the last character of the string.\n\tfor (let index = 0; index \u003c candidate.length - 1; index++)\n\t{\n\t\tconst charAtIndex = candidate.charAt(index)\n\n\t\tif (charAtIndex === 'x' || charAtIndex === 'X')\n\t\t{\n\t\t\tconst charAtNextIndex = candidate.charAt(index + 1)\n\n\t\t\tif (charAtNextIndex === 'x' || charAtNextIndex === 'X')\n\t\t\t{\n\t\t\t\t// This is the carrier code case, in which the 'X's always precede the national\n\t\t\t\t// significant number.\n\t\t\t\tindex++\n\t\t\t\tif (matchPhoneNumberStringAgainstPhoneNumber(candidate.substring(index), phoneNumber, metadata) !== 'NSN_MATCH')\n\t\t\t\t{\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\t// This is the extension sign case, in which the 'x' or 'X' should always precede the\n\t\t\t\t// extension number.\n\t\t\t}\n\t\t\telse {\n\t\t\t\tconst ext = parseDigits(candidate.substring(index))\n\t\t\t\tif (ext) {\n\t\t\t\t\tif (phoneNumber.ext !== ext)  {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (phoneNumber.ext) {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn true\n}\n\nfunction isNationalPrefixPresentIfRequired(phoneNumber, { defaultCountry, metadata: _metadata })\n{\n\t// First, check how we deduced the country code. If it was written in international format, then\n\t// the national prefix is not required.\n\tif (phoneNumber.__countryCallingCodeSource !== 'FROM_DEFAULT_COUNTRY')\n\t{\n\t\treturn true\n\t}\n\n\tconst metadata = new Metadata(_metadata)\n\tmetadata.selectNumberingPlan(phoneNumber.countryCallingCode)\n\n\tconst phoneNumberRegion = phoneNumber.country || getCountryByCallingCode(phoneNumber.countryCallingCode, {\n\t\tnationalNumber: phoneNumber.nationalNumber,\n\t\tmetadata\n\t})\n\n\t// Check if a national prefix should be present when formatting this number.\n\tconst nationalNumber = phoneNumber.nationalNumber\n\tconst format = chooseFormatForNumber(metadata.numberingPlan.formats(), nationalNumber)\n\n\t// To do this, we check that a national prefix formatting rule was present\n\t// and that it wasn't just the first-group symbol ($1) with punctuation.\n\tif (format.nationalPrefixFormattingRule())\n\t{\n\t\tif (metadata.numberingPlan.nationalPrefixIsOptionalWhenFormattingInNationalFormat())\n\t\t{\n\t\t\t// The national-prefix is optional in these cases, so we don't need to check if it was present.\n\t\t\treturn true\n\t\t}\n\n\t\tif (!format.usesNationalPrefix())\n\t\t{\n\t\t\t// National Prefix not needed for this number.\n\t\t\treturn true\n\t\t}\n\n\t\treturn Boolean(phoneNumber.nationalPrefix)\n\t}\n\n\treturn true\n}\n\nexport function containsMoreThanOneSlashInNationalNumber(phoneNumber, candidate)\n{\n\tconst firstSlashInBodyIndex = candidate.indexOf('/')\n\tif (firstSlashInBodyIndex \u003c 0)\n\t{\n\t\t// No slashes, this is okay.\n\t\treturn false\n\t}\n\n\t// Now look for a second one.\n\tconst secondSlashInBodyIndex = candidate.indexOf('/', firstSlashInBodyIndex + 1)\n\tif (secondSlashInBodyIndex \u003c 0)\n\t{\n\t\t// Only one slash, this is okay.\n\t\treturn false\n\t}\n\n\t// If the first slash is after the country calling code, this is permitted.\n\tconst candidateHasCountryCode =\n\t\t\tphoneNumber.__countryCallingCodeSource === 'FROM_NUMBER_WITH_PLUS_SIGN' ||\n\t\t\tphoneNumber.__countryCallingCodeSource === 'FROM_NUMBER_WITHOUT_PLUS_SIGN'\n\n\tif (candidateHasCountryCode \u0026\u0026 parseDigits(candidate.substring(0, firstSlashInBodyIndex)) === phoneNumber.countryCallingCode)\n\t{\n\t\t// Any more slashes and this is illegal.\n\t\treturn candidate.slice(secondSlashInBodyIndex + 1).indexOf('/') \u003e= 0\n\t}\n\n\treturn true\n}\n\nfunction checkNumberGroupingIsValid(\n\tnumber,\n\tcandidate,\n\tmetadata,\n\tcheckGroups,\n\tregExpCache\n) {\n\tthrow new Error('This part of code hasn\\'t been ported')\n\n\tconst normalizedCandidate = normalizeDigits(candidate, true /* keep non-digits */)\n\tlet formattedNumberGroups = getNationalNumberGroups(metadata, number, null)\n\tif (checkGroups(metadata, number, normalizedCandidate, formattedNumberGroups)) {\n\t\treturn true\n\t}\n\n\t// If this didn't pass, see if there are any alternate formats that match, and try them instead.\n\tconst alternateFormats = MetadataManager.getAlternateFormatsForCountry(number.getCountryCode())\n\tconst nationalSignificantNumber = util.getNationalSignificantNumber(number)\n\n\tif (alternateFormats) {\n\t\tfor (const alternateFormat of alternateFormats.numberFormats()) {\n\t\t\tif (alternateFormat.leadingDigitsPatterns().length \u003e 0) {\n\t\t\t\t// There is only one leading digits pattern for alternate formats.\n\t\t\t\tconst leadingDigitsRegExp = regExpCache.getPatternForRegExp('^' + alternateFormat.leadingDigitsPatterns()[0])\n\t\t\t\tif (!leadingDigitsRegExp.test(nationalSignificantNumber)) {\n\t\t\t\t\t// Leading digits don't match; try another one.\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t\tformattedNumberGroups = getNationalNumberGroups(metadata, number, alternateFormat)\n\t\t\tif (checkGroups(metadata, number, normalizedCandidate, formattedNumberGroups)) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t}\n\n\treturn false\n}\n\n/**\n * Helper method to get the national-number part of a number, formatted without any national\n * prefix, and return it as a set of digit blocks that would be formatted together following\n * standard formatting rules.\n */\nfunction getNationalNumberGroups(\n\tmetadata,\n\tnumber,\n\tformattingPattern\n) {\n\tthrow new Error('This part of code hasn\\'t been ported')\n\n\tif (formattingPattern) {\n\t\t// We format the NSN only, and split that according to the separator.\n\t\tconst nationalSignificantNumber = util.getNationalSignificantNumber(number)\n\t\treturn util.formatNsnUsingPattern(nationalSignificantNumber,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tformattingPattern, 'RFC3966', metadata).split('-')\n\t}\n\n\t// This will be in the format +CC-DG1-DG2-DGX;ext=EXT where DG1..DGX represents groups of digits.\n\tconst rfc3966Format = formatNumber(number, 'RFC3966', metadata)\n\n\t// We remove the extension part from the formatted string before splitting it into different\n\t// groups.\n\tlet endIndex = rfc3966Format.indexOf(';')\n\tif (endIndex \u003c 0) {\n\t\tendIndex = rfc3966Format.length\n\t}\n\n\t// The country-code will have a '-' following it.\n\tconst startIndex = rfc3966Format.indexOf('-') + 1\n\treturn rfc3966Format.slice(startIndex, endIndex).split('-')\n}\n\nfunction allNumberGroupsAreExactlyPresent\n(\n\tmetadata,\n\tnumber,\n\tnormalizedCandidate,\n\tformattedNumberGroups\n)\n{\n\tthrow new Error('This part of code hasn\\'t been ported')\n\n\tconst candidateGroups = normalizedCandidate.split(NON_DIGITS_PATTERN)\n\n\t// Set this to the last group, skipping it if the number has an extension.\n\tlet candidateNumberGroupIndex =\n\t\t\tnumber.hasExtension() ? candidateGroups.length - 2 : candidateGroups.length - 1\n\n\t// First we check if the national significant number is formatted as a block.\n\t// We use contains and not equals, since the national significant number may be present with\n\t// a prefix such as a national number prefix, or the country code itself.\n\tif (candidateGroups.length == 1\n\t\t\t|| candidateGroups[candidateNumberGroupIndex].contains(\n\t\t\t\t\tutil.getNationalSignificantNumber(number)))\n\t{\n\t\treturn true\n\t}\n\n\t// Starting from the end, go through in reverse, excluding the first group, and check the\n\t// candidate and number groups are the same.\n\tlet formattedNumberGroupIndex = (formattedNumberGroups.length - 1)\n\twhile (formattedNumberGroupIndex \u003e 0 \u0026\u0026 candidateNumberGroupIndex \u003e= 0)\n\t{\n\t\tif (candidateGroups[candidateNumberGroupIndex] !== formattedNumberGroups[formattedNumberGroupIndex])\n\t\t{\n\t\t\treturn false\n\t\t}\n\t\tformattedNumberGroupIndex--\n\t\tcandidateNumberGroupIndex--\n\t}\n\n\t// Now check the first group. There may be a national prefix at the start, so we only check\n\t// that the candidate group ends with the formatted number group.\n\treturn (candidateNumberGroupIndex \u003e= 0\n\t\t\t\u0026\u0026 endsWith(candidateGroups[candidateNumberGroupIndex], formattedNumberGroups[0]))\n}\n\n\nfunction allNumberGroupsRemainGrouped\n(\n\tmetadata,\n\tnumber,\n\tnormalizedCandidate,\n\tformattedNumberGroups\n)\n{\n\tthrow new Error('This part of code hasn\\'t been ported')\n\n\tlet fromIndex = 0\n\tif (number.getCountryCodeSource() !== CountryCodeSource.FROM_DEFAULT_COUNTRY)\n\t{\n\t\t// First skip the country code if the normalized candidate contained it.\n\t\tconst countryCode = String(number.getCountryCode())\n\t\tfromIndex = normalizedCandidate.indexOf(countryCode) + countryCode.length()\n\t}\n\n\t// Check each group of consecutive digits are not broken into separate groupings in the\n\t// {@code normalizedCandidate} string.\n\tfor (let i = 0; i \u003c formattedNumberGroups.length; i++)\n\t{\n\t\t// Fails if the substring of {@code normalizedCandidate} starting from {@code fromIndex}\n\t\t// doesn't contain the consecutive digits in formattedNumberGroups[i].\n\t\tfromIndex = normalizedCandidate.indexOf(formattedNumberGroups[i], fromIndex)\n\t\tif (fromIndex \u003c 0) {\n\t\t\treturn false\n\t\t}\n\t\t// Moves {@code fromIndex} forward.\n\t\tfromIndex += formattedNumberGroups[i].length()\n\t\tif (i == 0 \u0026\u0026 fromIndex \u003c normalizedCandidate.length())\n\t\t{\n\t\t\t// We are at the position right after the NDC. We get the region used for formatting\n\t\t\t// information based on the country code in the phone number, rather than the number itself,\n\t\t\t// as we do not need to distinguish between different countries with the same country\n\t\t\t// calling code and this is faster.\n\t\t\tconst region = util.getRegionCodeForCountryCode(number.getCountryCode())\n\t\t\tif (util.getNddPrefixForRegion(region, true) != null\n\t\t\t\t\t\u0026\u0026 Character.isDigit(normalizedCandidate.charAt(fromIndex))) {\n\t\t\t\t// This means there is no formatting symbol after the NDC. In this case, we only\n\t\t\t\t// accept the number if there is no formatting symbol at all in the number, except\n\t\t\t\t// for extensions. This is only important for countries with national prefixes.\n\t\t\t\tconst nationalSignificantNumber = util.getNationalSignificantNumber(number)\n\t\t\t\treturn startsWith\n\t\t\t\t(\n\t\t\t\t\tnormalizedCandidate.slice(fromIndex - formattedNumberGroups[i].length),\n\t\t\t\t\t nationalSignificantNumber\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t}\n\n\t// The check here makes sure that we haven't mistakenly already used the extension to\n\t// match the last group of the subscriber number. Note the extension cannot have\n\t// formatting in-between digits.\n\treturn normalizedCandidate.slice(fromIndex).contains(number.getExtension())\n}","import { trimAfterFirstMatch } from './util.js'\n\n// Regular expression of characters typically used to start a second phone number for the purposes\n// of parsing. This allows us to strip off parts of the number that are actually the start of\n// another number, such as for: (530) 583-6985 x302/x2303 -\u003e the second extension here makes this\n// actually two phone numbers, (530) 583-6985 x302 and (530) 583-6985 x2303. We remove the second\n// extension so that the first number is parsed correctly.\n//\n// Matches a slash (\\ or /) followed by a space followed by an `x`.\n//\nconst SECOND_NUMBER_START_PATTERN = /[\\\\/] *x/\n\nexport default function parsePreCandidate(candidate)\n{\n\t// Check for extra numbers at the end.\n\t// TODO: This is the place to start when trying to support extraction of multiple phone number\n\t// from split notations (+41 79 123 45 67 / 68).\n\treturn trimAfterFirstMatch(SECOND_NUMBER_START_PATTERN, candidate)\n}","// Matches strings that look like dates using \"/\" as a separator.\n// Examples: 3/10/2011, 31/10/96 or 08/31/95.\nconst SLASH_SEPARATED_DATES = /(?:(?:[0-3]?\\d\\/[01]?\\d)|(?:[01]?\\d\\/[0-3]?\\d))\\/(?:[12]\\d)?\\d{2}/\n\n// Matches timestamps.\n// Examples: \"2012-01-02 08:00\".\n// Note that the reg-ex does not include the\n// trailing \":\\d\\d\" -- that is covered by TIME_STAMPS_SUFFIX.\nconst TIME_STAMPS = /[12]\\d{3}[-/]?[01]\\d[-/]?[0-3]\\d +[0-2]\\d$/\nconst TIME_STAMPS_SUFFIX_LEADING = /^:[0-5]\\d/\n\nexport default function isValidPreCandidate(candidate, offset, text)\n{\n\t// Skip a match that is more likely to be a date.\n\tif (SLASH_SEPARATED_DATES.test(candidate)) {\n\t\treturn false\n\t}\n\n\t// Skip potential time-stamps.\n\tif (TIME_STAMPS.test(candidate))\n\t{\n\t\tconst followingText = text.slice(offset + candidate.length)\n\t\tif (TIME_STAMPS_SUFFIX_LEADING.test(followingText)) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}","// Copy-pasted from `PhoneNumberMatcher.js`.\n\nimport { PLUS_CHARS } from '../constants.js'\nimport { limit } from './util.js'\n\nimport {\n\tisLatinLetter,\n\tisInvalidPunctuationSymbol\n} from './utf-8.js'\n\nconst OPENING_PARENS = '(\\\\[\\uFF08\\uFF3B'\nconst CLOSING_PARENS = ')\\\\]\\uFF09\\uFF3D'\nconst NON_PARENS = `[^${OPENING_PARENS}${CLOSING_PARENS}]`\n\nexport const LEAD_CLASS = `[${OPENING_PARENS}${PLUS_CHARS}]`\n\n// Punctuation that may be at the start of a phone number - brackets and plus signs.\nconst LEAD_CLASS_LEADING = new RegExp('^' + LEAD_CLASS)\n\n// Limit on the number of pairs of brackets in a phone number.\nconst BRACKET_PAIR_LIMIT = limit(0, 3)\n\n/**\n * Pattern to check that brackets match. Opening brackets should be closed within a phone number.\n * This also checks that there is something inside the brackets. Having no brackets at all is also\n * fine.\n *\n * An opening bracket at the beginning may not be closed, but subsequent ones should be.  It's\n * also possible that the leading bracket was dropped, so we shouldn't be surprised if we see a\n * closing bracket first. We limit the sets of brackets in a phone number to four.\n */\nconst MATCHING_BRACKETS_ENTIRE = new RegExp\n(\n\t'^'\n\t+ \"(?:[\" + OPENING_PARENS + \"])?\" + \"(?:\" + NON_PARENS + \"+\" + \"[\" + CLOSING_PARENS + \"])?\"\n\t+ NON_PARENS + \"+\"\n\t+ \"(?:[\" + OPENING_PARENS + \"]\" + NON_PARENS + \"+[\" + CLOSING_PARENS + \"])\" + BRACKET_PAIR_LIMIT\n\t+ NON_PARENS + \"*\"\n\t+ '$'\n)\n\n/**\n * Matches strings that look like publication pages. Example:\n * \u003cpre\u003eComputing Complete Answers to Queries in the Presence of Limited Access Patterns.\n * Chen Li. VLDB J. 12(3): 211-227 (2003).\u003c/pre\u003e\n *\n * The string \"211-227 (2003)\" is not a telephone number.\n */\nconst PUB_PAGES = /\\d{1,5}-+\\d{1,5}\\s{0,4}\\(\\d{1,4}/\n\nexport default function isValidCandidate(candidate, offset, text, leniency)\n{\n\t// Check the candidate doesn't contain any formatting\n\t// which would indicate that it really isn't a phone number.\n\tif (!MATCHING_BRACKETS_ENTIRE.test(candidate) || PUB_PAGES.test(candidate)) {\n\t\treturn\n\t}\n\n\t// If leniency is set to VALID or stricter, we also want to skip numbers that are surrounded\n\t// by Latin alphabetic characters, to skip cases like abc8005001234 or 8005001234def.\n\tif (leniency !== 'POSSIBLE')\n\t{\n\t\t// If the candidate is not at the start of the text,\n\t\t// and does not start with phone-number punctuation,\n\t\t// check the previous character.\n\t\tif (offset \u003e 0 \u0026\u0026 !LEAD_CLASS_LEADING.test(candidate))\n\t\t{\n\t\t\tconst previousChar = text[offset - 1]\n\t\t\t// We return null if it is a latin letter or an invalid punctuation symbol.\n\t\t\tif (isInvalidPunctuationSymbol(previousChar) || isLatinLetter(previousChar)) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\tconst lastCharIndex = offset + candidate.length\n\t\tif (lastCharIndex \u003c text.length)\n\t\t{\n\t\t\tconst nextChar = text[lastCharIndex]\n\t\t\tif (isInvalidPunctuationSymbol(nextChar) || isLatinLetter(nextChar)) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\n\treturn true\n}","/**\n * A port of Google's `PhoneNumberMatcher.java`.\n * https://github.com/googlei18n/libphonenumber/blob/master/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberMatcher.java\n * Date: 08.03.2018.\n */\n\nimport {\n  MAX_LENGTH_FOR_NSN,\n  MAX_LENGTH_COUNTRY_CODE,\n  VALID_PUNCTUATION\n} from './constants.js'\n\nimport createExtensionPattern from './helpers/extension/createExtensionPattern.js'\n\nimport RegExpCache from './findNumbers/RegExpCache.js'\n\nimport {\n\tlimit,\n\ttrimAfterFirstMatch\n} from './findNumbers/util.js'\n\nimport {\n\t_pL,\n\t_pN,\n\tpZ,\n\tPZ,\n\tpNd\n} from './findNumbers/utf-8.js'\n\nimport Leniency from './findNumbers/Leniency.js'\nimport parsePreCandidate from './findNumbers/parsePreCandidate.js'\nimport isValidPreCandidate from './findNumbers/isValidPreCandidate.js'\nimport isValidCandidate, { LEAD_CLASS } from './findNumbers/isValidCandidate.js'\n\nimport { isSupportedCountry } from './metadata.js'\n\nimport parsePhoneNumber from './parsePhoneNumber.js'\n\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\n\nconst EXTN_PATTERNS_FOR_MATCHING = createExtensionPattern('matching')\n\n/**\n * Patterns used to extract phone numbers from a larger phone-number-like pattern. These are\n * ordered according to specificity. For example, white-space is last since that is frequently\n * used in numbers, not just to separate two numbers. We have separate patterns since we don't\n * want to break up the phone-number-like text on more than one different kind of symbol at one\n * time, although symbols of the same type (e.g. space) can be safely grouped together.\n *\n * Note that if there is a match, we will always check any text found up to the first match as\n * well.\n */\nconst INNER_MATCHES =\n[\n\t// Breaks on the slash - e.g. \"651-234-2345/332-445-1234\"\n\t'/+(.*)',\n\n\t// Note that the bracket here is inside the capturing group, since we consider it part of the\n\t// phone number. Will match a pattern like \"(650) 223 3345 (754) 223 3321\".\n\t'(\\\\([^(]*)',\n\n\t// Breaks on a hyphen - e.g. \"12345 - 332-445-1234 is my number.\"\n\t// We require a space on either side of the hyphen for it to be considered a separator.\n\t`(?:${pZ}-|-${pZ})${pZ}*(.+)`,\n\n\t// Various types of wide hyphens. Note we have decided not to enforce a space here, since it's\n\t// possible that it's supposed to be used to break two numbers without spaces, and we haven't\n\t// seen many instances of it used within a number.\n\t`[\\u2012-\\u2015\\uFF0D]${pZ}*(.+)`,\n\n\t// Breaks on a full stop - e.g. \"12345. 332-445-1234 is my number.\"\n\t`\\\\.+${pZ}*([^.]+)`,\n\n\t// Breaks on space - e.g. \"3324451234 8002341234\"\n\t`${pZ}+(${PZ}+)`\n]\n\n// Limit on the number of leading (plus) characters.\nconst leadLimit = limit(0, 2)\n\n// Limit on the number of consecutive punctuation characters.\nconst punctuationLimit = limit(0, 4)\n\n/* The maximum number of digits allowed in a digit-separated block. As we allow all digits in a\n * single block, set high enough to accommodate the entire national number and the international\n * country code. */\nconst digitBlockLimit = MAX_LENGTH_FOR_NSN + MAX_LENGTH_COUNTRY_CODE\n\n// Limit on the number of blocks separated by punctuation.\n// Uses digitBlockLimit since some formats use spaces to separate each digit.\nconst blockLimit = limit(0, digitBlockLimit)\n\n/* A punctuation sequence allowing white space. */\nconst punctuation = `[${VALID_PUNCTUATION}]` + punctuationLimit\n\n// A digits block without punctuation.\nconst digitSequence = pNd + limit(1, digitBlockLimit)\n\n/**\n * Phone number pattern allowing optional punctuation.\n * The phone number pattern used by `find()`, similar to\n * VALID_PHONE_NUMBER, but with the following differences:\n * \u003cul\u003e\n *   \u003cli\u003eAll captures are limited in order to place an upper bound to the text matched by the\n *       pattern.\n * \u003cul\u003e\n *   \u003cli\u003eLeading punctuation / plus signs are limited.\n *   \u003cli\u003eConsecutive occurrences of punctuation are limited.\n *   \u003cli\u003eNumber of digits is limited.\n * \u003c/ul\u003e\n *   \u003cli\u003eNo whitespace is allowed at the start or end.\n *   \u003cli\u003eNo alpha digits (vanity numbers such as 1-800-SIX-FLAGS) are currently supported.\n * \u003c/ul\u003e\n */\nconst PATTERN = '(?:' + LEAD_CLASS + punctuation + ')' + leadLimit\n\t+ digitSequence + '(?:' + punctuation + digitSequence + ')' + blockLimit\n\t+ '(?:' + EXTN_PATTERNS_FOR_MATCHING + ')?'\n\n// Regular expression of trailing characters that we want to remove.\n// We remove all characters that are not alpha or numerical characters.\n// The hash character is retained here, as it may signify\n// the previous block was an extension.\n//\n// // Don't know what does '\u0026\u0026' mean here.\n// const UNWANTED_END_CHAR_PATTERN = new RegExp(`[[\\\\P{N}\u0026\u0026\\\\P{L}]\u0026\u0026[^#]]+$`)\n//\nconst UNWANTED_END_CHAR_PATTERN = new RegExp(`[^${_pN}${_pL}#]+$`)\n\n// const NON_DIGITS_PATTERN = /(\\D+)/\n\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || Math.pow(2, 53) - 1\n\n/**\n * A stateful class that finds and extracts telephone numbers from {@linkplain CharSequence text}.\n * Instances can be created using the {@linkplain PhoneNumberUtil#findNumbers factory methods} in\n * {@link PhoneNumberUtil}.\n *\n * \u003cp\u003eVanity numbers (phone numbers using alphabetic digits such as \u003ctt\u003e1-800-SIX-FLAGS\u003c/tt\u003e are\n * not found.\n *\n * \u003cp\u003eThis class is not thread-safe.\n */\nexport default class PhoneNumberMatcher\n{\n  /**\n   * @param {string} text — the character sequence that we will search, null for no text.\n   * @param {'POSSIBLE'|'VALID'|'STRICT_GROUPING'|'EXACT_GROUPING'} [options.leniency] — The leniency to use when evaluating candidate phone numbers. See `source/findNumbers/Leniency.js` for more details.\n   * @param {number} [options.maxTries] — The maximum number of invalid numbers to try before giving up on the text. This is to cover degenerate cases where the text has a lot of false positives in it. Must be \u003e= 0.\n   */\n  constructor(text = '', options = {}, metadata)\n  {\n    options = {\n      v2: options.v2,\n      defaultCallingCode: options.defaultCallingCode,\n      defaultCountry: options.defaultCountry \u0026\u0026 isSupportedCountry(options.defaultCountry, metadata) ? options.defaultCountry : undefined,\n      // Here it should've assigned a default value only if `options.leniency === undefined`.\n      leniency: options.leniency || (options.extended ? 'POSSIBLE' : 'VALID'),\n      // Here it should've assigned a default value only if `options.maxTries === undefined`.\n      maxTries: options.maxTries || MAX_SAFE_INTEGER\n    }\n\n    // Validate `leniency`.\n\t\t// if (!options.leniency) {\n\t\t// \tthrow new TypeError('`leniency` is required')\n\t\t// }\n\t\tif (!Leniency[options.leniency]) {\n\t\t\tthrow new TypeError(`Unknown leniency: \"${options.leniency}\"`)\n\t\t}\n    if (options.leniency !== 'POSSIBLE' \u0026\u0026 options.leniency !== 'VALID') {\n      throw new TypeError(`Invalid \\`leniency\\`: \"${options.leniency}\". Supported values: \"POSSIBLE\", \"VALID\".`)\n    }\n\n    // Validate `maxTries`.\n\t\tif (options.maxTries \u003c 0) {\n\t\t\tthrow new TypeError('`maxTries` must be `\u003e= 0`')\n\t\t}\n\n\t\tthis.text = text\n\t\tthis.options = options\n    this.metadata = metadata\n\n\t\t// The degree of phone number validation.\n\t\tthis.leniency = Leniency[options.leniency]\n\n\t\t/** The maximum number of retries after matching an invalid number. */\n\t\tthis.maxTries = options.maxTries\n\n    // Compile regular expressions.\n\t\tthis.PATTERN = new RegExp(PATTERN, 'ig')\n    this.INNER_MATCHES = INNER_MATCHES.map(pattern =\u003e new RegExp(pattern, 'g'))\n\n    /** The iteration tristate. */\n    this.state = 'NOT_READY'\n\n    /** The next index to start searching at. Undefined in {@link State#DONE}. */\n    this.searchIndex = 0\n\n    // A cache for frequently used country-specific regular expressions. Set to 32 to cover ~2-3\n    // countries being used for the same doc with ~10 patterns for each country. Some pages will have\n    // a lot more countries in use, but typically fewer numbers for each so expanding the cache for\n    // that use-case won't have a lot of benefit.\n    this.regExpCache = new RegExpCache(32)\n  }\n\n  /**\n   * Attempts to find the next subsequence in the searched sequence on or after {@code searchIndex}\n   * that represents a phone number. Returns the next match, null if none was found.\n   *\n   * @param index  the search index to start searching at\n   * @return  the phone number match found, null if none can be found\n   */\n\tfind(index) {\n\t\t// Reset the regular expression.\n\t\tthis.PATTERN.lastIndex = index\n\n\t\tlet matches\n\t\twhile ((this.maxTries \u003e 0) \u0026\u0026 (matches = this.PATTERN.exec(this.text)) !== null) {\n\t\t\tlet candidate = matches[0]\n\t\t\tconst offset = matches.index\n\n\t\t\tcandidate = parsePreCandidate(candidate)\n\n\t\t\tif (isValidPreCandidate(candidate, offset, this.text)) {\n\t\t\t\tconst match =\n\t\t\t\t\t// Try to come up with a valid match given the entire candidate.\n\t\t\t\t\tthis.parseAndVerify(candidate, offset, this.text)\n\t\t\t\t\t// If that failed, try to find an \"inner match\" -\n\t\t\t\t\t// there might be a phone number within this candidate.\n\t\t\t\t\t|| this.extractInnerMatch(candidate, offset, this.text)\n\n\t\t\t\tif (match) {\n\t\t\t\t\tif (this.options.v2) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tstartsAt: match.startsAt,\n\t\t\t\t\t\t\tendsAt: match.endsAt,\n\t\t\t\t\t\t\tnumber: match.phoneNumber\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n            const { phoneNumber } = match\n\n            const result = {\n              startsAt: match.startsAt,\n              endsAt: match.endsAt,\n              phone: phoneNumber.nationalNumber\n            }\n\n            if (phoneNumber.country) {\n              /* istanbul ignore if */\n              if (USE_NON_GEOGRAPHIC_COUNTRY_CODE \u0026\u0026 country === '001') {\n                result.countryCallingCode = phoneNumber.countryCallingCode\n              } else {\n                result.country = phoneNumber.country\n              }\n            } else {\n              result.countryCallingCode = phoneNumber.countryCallingCode\n            }\n\n            if (phoneNumber.ext) {\n              result.ext = phoneNumber.ext\n            }\n\n            return result\n          }\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.maxTries--\n\t\t}\n\t}\n\n  /**\n   * Attempts to extract a match from `substring`\n   * if the substring itself does not qualify as a match.\n   */\n  extractInnerMatch(substring, offset, text) {\n    for (const innerMatchRegExp of this.INNER_MATCHES) {\n      // Reset regular expression.\n      innerMatchRegExp.lastIndex = 0\n\n      let isFirstMatch = true\n      let candidateMatch\n      while (this.maxTries \u003e 0 \u0026\u0026 (candidateMatch = innerMatchRegExp.exec(substring)) !== null) {\n        if (isFirstMatch) {\n          // We should handle any group before this one too.\n          const candidate = trimAfterFirstMatch(\n            UNWANTED_END_CHAR_PATTERN,\n            substring.slice(0, candidateMatch.index)\n          )\n\n          const match = this.parseAndVerify(candidate, offset, text)\n\n          if (match) {\n            return match\n          }\n\n          this.maxTries--\n          isFirstMatch = false\n        }\n\n        const candidate = trimAfterFirstMatch(UNWANTED_END_CHAR_PATTERN, candidateMatch[1])\n\n        // Java code does `groupMatcher.start(1)` here,\n        // but there's no way in javascript to get a `candidate` start index,\n        // therefore resort to using this kind of an approximation.\n        // (`groupMatcher` is called `candidateInSubstringMatch` in this javascript port)\n        // https://stackoverflow.com/questions/15934353/get-index-of-each-capture-in-a-javascript-regex\n        const candidateIndexGuess = substring.indexOf(candidate, candidateMatch.index)\n\n        const match = this.parseAndVerify(candidate, offset + candidateIndexGuess, text)\n        if (match) {\n          return match\n        }\n\n        this.maxTries--\n      }\n    }\n  }\n\n  /**\n   * Parses a phone number from the `candidate` using `parse` and\n   * verifies it matches the requested `leniency`. If parsing and verification succeed,\n   * a corresponding `PhoneNumberMatch` is returned, otherwise this method returns `null`.\n   *\n   * @param candidate  the candidate match\n   * @param offset  the offset of {@code candidate} within {@link #text}\n   * @return  the parsed and validated phone number match, or null\n   */\n  parseAndVerify(candidate, offset, text) {\n    if (!isValidCandidate(candidate, offset, text, this.options.leniency)) {\n      return\n  \t}\n\n    const phoneNumber = parsePhoneNumber(\n      candidate,\n      {\n        extended: true,\n        defaultCountry: this.options.defaultCountry,\n        defaultCallingCode: this.options.defaultCallingCode\n      },\n      this.metadata\n    )\n\n    if (!phoneNumber) {\n      return\n    }\n\n    if (!phoneNumber.isPossible()) {\n      return\n    }\n\n    if (this.leniency(phoneNumber, {\n      candidate,\n      defaultCountry: this.options.defaultCountry,\n      metadata: this.metadata,\n      regExpCache: this.regExpCache\n    })) {\n      return {\n        startsAt: offset,\n        endsAt: offset + candidate.length,\n        phoneNumber\n      }\n    }\n  }\n\n  hasNext()\n  {\n    if (this.state === 'NOT_READY')\n    {\n      this.lastMatch = this.find(this.searchIndex)\n\n      if (this.lastMatch)\n      {\n        this.searchIndex = this.lastMatch.endsAt\n        this.state = 'READY'\n      }\n      else\n      {\n        this.state = 'DONE'\n      }\n    }\n\n    return this.state === 'READY'\n  }\n\n  next()\n  {\n    // Check the state and find the next match as a side-effect if necessary.\n    if (!this.hasNext())\n    {\n      throw new Error('No next element')\n    }\n\n    // Don't retain that memory any longer than necessary.\n    const result = this.lastMatch\n    this.lastMatch = null\n    this.state = 'NOT_READY'\n    return result\n  }\n}","import PhoneNumberMatcher from '../PhoneNumberMatcher.js'\nimport normalizeArguments from '../normalizeArguments.js'\n\nexport default function findNumbers() {\n\tconst { text, options, metadata } = normalizeArguments(arguments)\n\tconst matcher = new PhoneNumberMatcher(text, options, metadata)\n\tconst results = []\n\twhile (matcher.hasNext()) {\n\t\tresults.push(matcher.next())\n\t}\n\treturn results\n}","import normalizeArguments from '../normalizeArguments.js'\nimport PhoneNumberMatcher from '../PhoneNumberMatcher.js'\n\n/**\n * @return ES6 `for ... of` iterator.\n */\nexport default function searchNumbers()\n{\n\tconst { text, options, metadata } = normalizeArguments(arguments)\n\n\tconst matcher = new PhoneNumberMatcher(text, options, metadata)\n\n\treturn  {\n\t\t[Symbol.iterator]() {\n\t\t\treturn {\n\t    \t\tnext: () =\u003e {\n\t    \t\t\tif (matcher.hasNext()) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tdone: false,\n\t\t\t\t\t\t\tvalue: matcher.next()\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdone: true\n\t\t\t\t\t}\n\t    \t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","import PhoneNumberMatcher from './PhoneNumberMatcher.js'\nimport normalizeArguments from './normalizeArguments.js'\n\nexport default function findPhoneNumbersInText() {\n\tconst { text, options, metadata } = normalizeArguments(arguments)\n\tconst matcher = new PhoneNumberMatcher(text, { ...options, v2: true }, metadata)\n\tconst results = []\n\twhile (matcher.hasNext()) {\n\t\tresults.push(matcher.next())\n\t}\n\treturn results\n}","import PhoneNumberMatcher from './PhoneNumberMatcher.js'\nimport normalizeArguments from './normalizeArguments.js'\n\nexport default function searchPhoneNumbersInText() {\n\tconst { text, options, metadata } = normalizeArguments(arguments)\n\tconst matcher = new PhoneNumberMatcher(text, { ...options, v2: true }, metadata)\n\treturn  {\n\t\t[Symbol.iterator]() {\n\t\t\treturn {\n\t    \t\tnext: () =\u003e {\n\t    \t\t\tif (matcher.hasNext()) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tdone: false,\n\t\t\t\t\t\t\tvalue: matcher.next()\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdone: true\n\t\t\t\t\t}\n\t    \t\t}\n\t\t\t}\n\t\t}\n\t}\n}","// This \"state\" object simply holds the state of the \"AsYouType\" parser:\n//\n// Sidenote:\n//   `state.callingCode` and `state.country` are somewhat independent from one another\n//   and there could be situations when one is defined but the other is not.\n//   * Situations when `state.country` would be defined but `state.callingCode` would be `undefined`:\n// \t\t * When `defaultCountry` is specified and inputting a phone number not in \"international\" format.\n//     * When `defaultCountry` is specified and inputting a phone number in \"international\" format,\n//       but before the `+` character has been input.\n//   * Situations when `state.country` would be `undefined` but `state.callingCode` would be defined:\n//     * When `defaultCountry` is not specified and inputting a phone number in \"international\" format,\n//       and the \"calling code\" part is already complete, but multiple countries share this \"calling code\"\n//       and there's not enough national (significant) number digits yet to determine the exact country.\n//   * In any other sigutations, `state.country` and `state.callingCode` are either both defined or both `undefined`.\n//     * When they're both defined, `state.callingCode` always corresponds to `state.country`.\n//       So both are always consistent in this case.\n//\n// * `country?: string` — The exact country of the phone number, if it could be determined.\n//                        When inputting a phone number in \"international\" format, it will derive the `country` from \"country calling code\" and the phone number digits.\n//                        When inputting a phone number in \"national\" format, it will derive the `country` from `defaultCountry` that was specified when creating the `AsYouType` formatter.\n//                        Sidenote: If `USE_NON_GEOGRAPHIC_COUNTRY_CODE` flag was `true`, then for \"non-geographic phone numbers\" `state.country` would've been \"001\".\n// * `callingCode?: string` — \"Country calling code\" that has been extracted from the input phone number.\n//                        When inputting a phone number in \"international\" format, it will extract the \"country calling code\" from the digits that follow the \"+\" character.\n//                        When inputting a phone number in \"national\" format, `callingCode` will be `undefined`.\n// * `digits: string` — Phone number digits that have been input so far, including the \"+\" character, if present. In case of inputting non-arabic digits, those will be converted to arabic ones.\n// * `international: boolean` — Whether the phone number is being input in \"international\" format, i.e. with a \"+\" character.\n// * `missingPlus: boolean` — Whether it's a phone number in \"international\" format that is missing the leading \"+\" character for some reason — apparently, Google thinks that it's a common mistake when inputting a phone number.\n// * `IDDPrefix?: string` — An \"IDD prefix\", when the phone number is being input in an \"out-of-country dialing\" format. https://wikitravel.org/en/International_dialling_prefix\n// * `carrierCode?: string` — A \"carrier code\", if the phone number contains it. Normally, those can only be present in Colombia or Brazil, and only when calling from mobile phones to fixed-line numbers.\n// * `nationalPrefix?: string` — \"National prefix\", if present in the phone number input.\n// * `nationalSignificantNumber?: string` — National (significant) number digits that have been input so far.\n// * `nationalSignificantNumberIsModified: boolean` — Tells if the parsed national (significant) number is present as-is in the input string. For example, when inputting \"0343515551212999\" Argentinian mobile number, the parsed national (significant) number is \"93435551212999\". There, one can see how it stripped \"0\" national prefix and prepended a \"9\", because that's how it is instructed to do in Argentina's metadata. So in the described example, the parsed national (significant) number is not present as-is in the input string. Instead, it's \"modified\" in the input string. https://gitlab.com/caamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\n// * `prefixBeforeNationalSignificantNumberThatIsNotNationalPrefix?: string` — In some countries, a phone number could have a prefix that is not a \"national prefix\" but rather some other type of \"utility\" prefix.\n//                                                                             For example, when calling within Australia, one could prepend `1831` prefix to hide caller's phone number.\n//                                                                             https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\n//\nexport default class AsYouTypeState {\n\tconstructor({ onCountryChange, onCallingCodeChange }) {\n\t\tthis.onCountryChange = onCountryChange\n\t\tthis.onCallingCodeChange = onCallingCodeChange\n\t}\n\n\treset({ country, callingCode }) {\n\t\tthis.international = false\n\t\tthis.missingPlus = false\n\t\tthis.IDDPrefix = undefined\n\t\tthis.callingCode = undefined\n\t\tthis.digits = ''\n\t\tthis.resetNationalSignificantNumber()\n\t\tthis.initCountryAndCallingCode(country, callingCode)\n\t}\n\n\tresetNationalSignificantNumber() {\n\t\tthis.nationalSignificantNumber = this.getNationalDigits()\n\t\tthis.nationalSignificantNumberIsModified = false\n\t\tthis.nationalPrefix = undefined\n\t\tthis.carrierCode = undefined\n\t\tthis.prefixBeforeNationalSignificantNumberThatIsNotNationalPrefix = undefined\n\t}\n\n\tupdate(properties) {\n\t\tfor (const key of Object.keys(properties)) {\n\t\t\tthis[key] = properties[key]\n\t\t}\n\t}\n\n\tinitCountryAndCallingCode(country, callingCode) {\n\t\tthis.setCountry(country)\n\t\tthis.setCallingCode(callingCode)\n\t}\n\n\tsetCountry(country) {\n\t\tthis.country = country\n\t\tthis.onCountryChange(country)\n\t}\n\n\tsetCallingCode(callingCode) {\n\t\tthis.callingCode = callingCode\n\t\tthis.onCallingCodeChange(callingCode, this.country)\n\t}\n\n\tstartInternationalNumber(country, callingCode) {\n\t\t// Prepend the `+` to parsed input.\n\t\tthis.international = true\n\t\t// If a default country was set then reset it\n\t\t// because an explicitly international phone\n\t\t// number is being entered.\n\t\tthis.initCountryAndCallingCode(country, callingCode)\n\t}\n\n\tappendDigits(nextDigits) {\n\t\tthis.digits += nextDigits\n\t}\n\n\tappendNationalSignificantNumberDigits(nextDigits) {\n\t\tthis.nationalSignificantNumber += nextDigits\n\t}\n\n\t/**\n\t * Returns the part of `this.digits` that corresponds to the national number.\n\t * Basically, all digits that have been input by the user, except for the\n\t * international prefix and the country calling code part\n\t * (if the number is an international one).\n\t * @return {string}\n\t */\n\tgetNationalDigits() {\n\t\tif (this.international) {\n\t\t\treturn this.digits.slice(\n\t\t\t\t(this.IDDPrefix ? this.IDDPrefix.length : 0) +\n\t\t\t\t(this.callingCode ? this.callingCode.length : 0)\n\t\t\t)\n\t\t}\n\t\treturn this.digits\n\t}\n\n\tgetDigitsWithoutInternationalPrefix() {\n\t\tif (this.international) {\n\t\t\tif (this.IDDPrefix) {\n\t\t\t\treturn this.digits.slice(this.IDDPrefix.length)\n\t\t\t}\n\t\t}\n\t\treturn this.digits\n\t}\n}","// Should be the same as `DIGIT_PLACEHOLDER` in `libphonenumber-metadata-generator`.\nexport const DIGIT_PLACEHOLDER = 'x' // '\\u2008' (punctuation space)\nconst DIGIT_PLACEHOLDER_MATCHER = new RegExp(DIGIT_PLACEHOLDER)\n\n// Counts all occurences of a symbol in a string.\n// Unicode-unsafe (because using `.split()`).\nexport function countOccurences(symbol, string) {\n\tlet count = 0\n\t// Using `.split('')` to iterate through a string here\n\t// to avoid requiring `Symbol.iterator` polyfill.\n\t// `.split('')` is generally not safe for Unicode,\n\t// but in this particular case for counting brackets it is safe.\n\t// for (const character of string)\n\tfor (const character of string.split('')) {\n\t\tif (character === symbol) {\n\t\t\tcount++\n\t\t}\n\t}\n\treturn count\n}\n\n// Repeats a string (or a symbol) N times.\n// http://stackoverflow.com/questions/202605/repeat-string-javascript\nexport function repeat(string, times) {\n\tif (times \u003c 1) {\n\t\treturn ''\n\t}\n\tlet result = ''\n\twhile (times \u003e 1) {\n\t\tif (times \u0026 1) {\n\t\t\tresult += string\n\t\t}\n\t\ttimes \u003e\u003e= 1\n\t\tstring += string\n\t}\n\treturn result + string\n}\n\nexport function cutAndStripNonPairedParens(string, cutBeforeIndex) {\n\tif (string[cutBeforeIndex] === ')') {\n\t\tcutBeforeIndex++\n\t}\n\treturn stripNonPairedParens(string.slice(0, cutBeforeIndex))\n}\n\nexport function closeNonPairedParens(template, cut_before) {\n\tconst retained_template = template.slice(0, cut_before)\n\tconst opening_braces = countOccurences('(', retained_template)\n\tconst closing_braces = countOccurences(')', retained_template)\n\tlet dangling_braces = opening_braces - closing_braces\n\twhile (dangling_braces \u003e 0 \u0026\u0026 cut_before \u003c template.length) {\n\t\tif (template[cut_before] === ')') {\n\t\t\tdangling_braces--\n\t\t}\n\t\tcut_before++\n\t}\n\treturn template.slice(0, cut_before)\n}\n\nexport function stripNonPairedParens(string) {\n\tconst dangling_braces =[]\n\tlet i = 0\n\twhile (i \u003c string.length) {\n\t\tif (string[i] === '(') {\n\t\t\tdangling_braces.push(i)\n\t\t}\n\t\telse if (string[i] === ')') {\n\t\t\tdangling_braces.pop()\n\t\t}\n\t\ti++\n\t}\n\tlet start = 0\n\tlet cleared_string = ''\n\tdangling_braces.push(string.length)\n\tfor (const index of dangling_braces) {\n\t\tcleared_string += string.slice(start, index)\n\t\tstart = index + 1\n\t}\n\treturn cleared_string\n}\n\nexport function populateTemplateWithDigits(template, position, digits) {\n\t// Using `.split('')` to iterate through a string here\n\t// to avoid requiring `Symbol.iterator` polyfill.\n\t// `.split('')` is generally not safe for Unicode,\n\t// but in this particular case for `digits` it is safe.\n\t// for (const digit of digits)\n\tfor (const digit of digits.split('')) {\n\t\t// If there is room for more digits in current `template`,\n\t\t// then set the next digit in the `template`,\n\t\t// and return the formatted digits so far.\n\t\t// If more digits are entered than the current format could handle.\n\t\tif (template.slice(position + 1).search(DIGIT_PLACEHOLDER_MATCHER) \u003c 0) {\n\t\t\treturn\n\t\t}\n\t\tposition = template.search(DIGIT_PLACEHOLDER_MATCHER)\n\t\ttemplate = template.replace(DIGIT_PLACEHOLDER_MATCHER, digit)\n\t}\n\treturn [template, position]\n}","import checkNumberLength from './helpers/checkNumberLength.js'\nimport parseDigits from './helpers/parseDigits.js'\nimport formatNationalNumberUsingFormat from './helpers/formatNationalNumberUsingFormat.js'\n\nexport default function formatCompleteNumber(state, format, {\n\tmetadata,\n\tshouldTryNationalPrefixFormattingRule,\n\tgetSeparatorAfterNationalPrefix\n}) {\n\tconst matcher = new RegExp(`^(?:${format.pattern()})$`)\n\tif (matcher.test(state.nationalSignificantNumber)) {\n\t\treturn formatNationalNumberWithAndWithoutNationalPrefixFormattingRule(\n\t\t\tstate,\n\t\t\tformat,\n\t\t\t{\n\t\t\t\tmetadata,\n\t\t\t\tshouldTryNationalPrefixFormattingRule,\n\t\t\t\tgetSeparatorAfterNationalPrefix\n\t\t\t}\n\t\t)\n\t}\n}\n\nexport function canFormatCompleteNumber(nationalSignificantNumber, metadata) {\n\treturn checkNumberLength(nationalSignificantNumber, undefined, metadata) === 'IS_POSSIBLE'\n}\n\nfunction formatNationalNumberWithAndWithoutNationalPrefixFormattingRule(state, format, {\n\tmetadata,\n\tshouldTryNationalPrefixFormattingRule,\n\tgetSeparatorAfterNationalPrefix\n}) {\n\t// `format` has already been checked for `nationalPrefix` requirement.\n\n\tconst {\n\t\tnationalSignificantNumber,\n\t\tinternational,\n\t\tnationalPrefix,\n\t\tcarrierCode\n\t} = state\n\n\t// Format the number with using `national_prefix_formatting_rule`.\n\t// If the resulting formatted number is a valid formatted number, then return it.\n\t//\n\t// Google's AsYouType formatter is different in a way that it doesn't try\n\t// to format using the \"national prefix formatting rule\", and instead it\n\t// simply prepends a national prefix followed by a \" \" character.\n\t// This code does that too, but as a fallback.\n\t// The reason is that \"national prefix formatting rule\" may use parentheses,\n\t// which wouldn't be included has it used the simpler Google's way.\n\t//\n\tif (shouldTryNationalPrefixFormattingRule(format)) {\n\t\tconst formattedNumber = formatNationalNumber(state, format, {\n\t\t\tuseNationalPrefixFormattingRule: true,\n\t\t\tgetSeparatorAfterNationalPrefix,\n\t\t\tmetadata\n\t\t})\n\t\tif (formattedNumber) {\n\t\t\treturn formattedNumber\n\t\t}\n\t}\n\n\t// Format the number without using `national_prefix_formatting_rule`.\n\treturn formatNationalNumber(state, format, {\n\t\tuseNationalPrefixFormattingRule: false,\n\t\tgetSeparatorAfterNationalPrefix,\n\t\tmetadata\n\t})\n}\n\nfunction formatNationalNumber(state, format, {\n\tmetadata,\n\tuseNationalPrefixFormattingRule,\n\tgetSeparatorAfterNationalPrefix\n}) {\n\tlet formattedNationalNumber = formatNationalNumberUsingFormat(\n\t\tstate.nationalSignificantNumber,\n\t\tformat,\n\t\t{\n\t\t\tcarrierCode: state.carrierCode,\n\t\t\tuseInternationalFormat: state.international,\n\t\t\twithNationalPrefix: useNationalPrefixFormattingRule,\n\t\t\tmetadata\n\t\t}\n\t)\n\tif (!useNationalPrefixFormattingRule) {\n\t\tif (state.nationalPrefix) {\n\t\t\t// If a national prefix was extracted, then just prepend it,\n\t\t\t// followed by a \" \" character.\n\t\t\tformattedNationalNumber = state.nationalPrefix +\n\t\t\t\tgetSeparatorAfterNationalPrefix(format) +\n\t\t\t\tformattedNationalNumber\n\t\t} else if (state.prefixBeforeNationalSignificantNumberThatIsNotNationalPrefix) {\n\t\t\tformattedNationalNumber = state.prefixBeforeNationalSignificantNumberThatIsNotNationalPrefix +\n\t\t\t\t' ' +\n\t\t\t\tformattedNationalNumber\n\t\t}\n\t}\n\tif (isValidFormattedNationalNumber(formattedNationalNumber, state)) {\n\t\treturn formattedNationalNumber\n\t}\n}\n\n// Check that the formatted phone number contains exactly\n// the same digits that have been input by the user.\n// For example, when \"0111523456789\" is input for `AR` country,\n// the extracted `this.nationalSignificantNumber` is \"91123456789\",\n// which means that the national part of `this.digits` isn't simply equal to\n// `this.nationalPrefix` + `this.nationalSignificantNumber`.\n//\n// Also, a `format` can add extra digits to the `this.nationalSignificantNumber`\n// being formatted via `metadata[country].national_prefix_transform_rule`.\n// For example, for `VI` country, it prepends `340` to the national number,\n// and if this check hasn't been implemented, then there would be a bug\n// when `340` \"area coude\" is \"duplicated\" during input for `VI` country:\n// https://github.com/catamphetamine/libphonenumber-js/issues/318\n//\n// So, all these \"gotchas\" are filtered out.\n//\n// In the original Google's code, the comments say:\n// \"Check that we didn't remove nor add any extra digits when we matched\n// this formatting pattern. This usually happens after we entered the last\n// digit during AYTF. Eg: In case of MX, we swallow mobile token (1) when\n// formatted but AYTF should retain all the number entered and not change\n// in order to match a format (of same leading digits and length) display\n// in that way.\"\n// \"If it's the same (i.e entered number and format is same), then it's\n// safe to return this in formatted number as nothing is lost / added.\"\n// Otherwise, don't use this format.\n// https://github.com/google/libphonenumber/commit/3e7c1f04f5e7200f87fb131e6f85c6e99d60f510#diff-9149457fa9f5d608a11bb975c6ef4bc5\n// https://github.com/google/libphonenumber/commit/3ac88c7106e7dcb553bcc794b15f19185928a1c6#diff-2dcb77e833422ee304da348b905cde0b\n//\nfunction isValidFormattedNationalNumber(formattedNationalNumber, state) {\n\treturn parseDigits(formattedNationalNumber) === state.getNationalDigits()\n}","export default class PatternParser {\n\tparse(pattern) {\n\t\tthis.context = [{\n\t\t\tor: true,\n\t\t\tinstructions: []\n\t\t}]\n\n\t\tthis.parsePattern(pattern)\n\n\t\tif (this.context.length !== 1) {\n\t\t\tthrow new Error('Non-finalized contexts left when pattern parse ended')\n\t\t}\n\n\t\tconst { branches, instructions } = this.context[0]\n\n\t\tif (branches) {\n\t\t\treturn {\n\t\t\t\top: '|',\n\t\t\t\targs: branches.concat([\n\t\t\t\t\texpandSingleElementArray(instructions)\n\t\t\t\t])\n\t\t\t}\n\t\t}\n\n\t\t/* istanbul ignore if */\n\t\tif (instructions.length === 0) {\n\t\t\tthrow new Error('Pattern is required')\n\t\t}\n\n\t\tif (instructions.length === 1) {\n\t\t\treturn instructions[0]\n\t\t}\n\n\t\treturn instructions\n\t}\n\n\tstartContext(context) {\n\t\tthis.context.push(context)\n\t}\n\n\tendContext() {\n\t\tthis.context.pop()\n\t}\n\n\tgetContext() {\n\t\treturn this.context[this.context.length - 1]\n\t}\n\n\tparsePattern(pattern) {\n\t\tif (!pattern) {\n\t\t\tthrow new Error('Pattern is required')\n\t\t}\n\n\t\tconst match = pattern.match(OPERATOR)\n\t\tif (!match) {\n\t\t\tif (ILLEGAL_CHARACTER_REGEXP.test(pattern)) {\n\t\t\t\tthrow new Error(`Illegal characters found in a pattern: ${pattern}`)\n\t\t\t}\n\t\t\tthis.getContext().instructions = this.getContext().instructions.concat(\n\t\t\t\tpattern.split('')\n\t\t\t)\n\t\t\treturn\n\t\t}\n\n\t\tconst operator = match[1]\n\t\tconst before = pattern.slice(0, match.index)\n\t\tconst rightPart = pattern.slice(match.index + operator.length)\n\n\t\tswitch (operator) {\n\t\t\tcase '(?:':\n\t\t\t\tif (before) {\n\t\t\t\t\tthis.parsePattern(before)\n\t\t\t\t}\n\t\t\t\tthis.startContext({\n\t\t\t\t\tor: true,\n\t\t\t\t\tinstructions: [],\n\t\t\t\t\tbranches: []\n\t\t\t\t})\n\t\t\t\tbreak\n\n\t\t\tcase ')':\n\t\t\t\tif (!this.getContext().or) {\n\t\t\t\t\tthrow new Error('\")\" operator must be preceded by \"(?:\" operator')\n\t\t\t\t}\n\t\t\t\tif (before) {\n\t\t\t\t\tthis.parsePattern(before)\n\t\t\t\t}\n\t\t\t\tif (this.getContext().instructions.length === 0) {\n\t\t\t\t\tthrow new Error('No instructions found after \"|\" operator in an \"or\" group')\n\t\t\t\t}\n\t\t\t\tconst { branches } = this.getContext()\n\t\t\t\tbranches.push(\n\t\t\t\t\texpandSingleElementArray(\n\t\t\t\t\t\tthis.getContext().instructions\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\tthis.endContext()\n\t\t\t\tthis.getContext().instructions.push({\n\t\t\t\t\top: '|',\n\t\t\t\t\targs: branches\n\t\t\t\t})\n\t\t\t\tbreak\n\n\t\t\tcase '|':\n\t\t\t\tif (!this.getContext().or) {\n\t\t\t\t\tthrow new Error('\"|\" operator can only be used inside \"or\" groups')\n\t\t\t\t}\n\t\t\t\tif (before) {\n\t\t\t\t\tthis.parsePattern(before)\n\t\t\t\t}\n\t\t\t\t// The top-level is an implicit \"or\" group, if required.\n\t\t\t\tif (!this.getContext().branches) {\n\t\t\t\t\t// `branches` are not defined only for the root implicit \"or\" operator.\n\t\t\t\t\t/* istanbul ignore else */\n\t\t\t\t\tif (this.context.length === 1) {\n\t\t\t\t\t\tthis.getContext().branches = []\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow new Error('\"branches\" not found in an \"or\" group context')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.getContext().branches.push(\n\t\t\t\t\texpandSingleElementArray(\n\t\t\t\t\t\tthis.getContext().instructions\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\tthis.getContext().instructions = []\n\t\t\t\tbreak\n\n\t\t\tcase '[':\n\t\t\t\tif (before) {\n\t\t\t\t\tthis.parsePattern(before)\n\t\t\t\t}\n\t\t\t\tthis.startContext({\n\t\t\t\t\toneOfSet: true\n\t\t\t\t})\n\t\t\t\tbreak\n\n\t\t\tcase ']':\n\t\t\t\tif (!this.getContext().oneOfSet) {\n\t\t\t\t\tthrow new Error('\"]\" operator must be preceded by \"[\" operator')\n\t\t\t\t}\n\t\t\t\tthis.endContext()\n\t\t\t\tthis.getContext().instructions.push({\n\t\t\t\t\top: '[]',\n\t\t\t\t\targs: parseOneOfSet(before)\n\t\t\t\t})\n\t\t\t\tbreak\n\n\t\t\t/* istanbul ignore next */\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`Unknown operator: ${operator}`)\n\t\t}\n\n\t\tif (rightPart) {\n\t\t\tthis.parsePattern(rightPart)\n\t\t}\n\t}\n}\n\nfunction parseOneOfSet(pattern) {\n\tconst values = []\n\tlet i = 0\n\twhile (i \u003c pattern.length) {\n\t\tif (pattern[i] === '-') {\n\t\t\tif (i === 0 || i === pattern.length - 1) {\n\t\t\t\tthrow new Error(`Couldn't parse a one-of set pattern: ${pattern}`)\n\t\t\t}\n\t\t\tconst prevValue = pattern[i - 1].charCodeAt(0) + 1\n\t\t\tconst nextValue = pattern[i + 1].charCodeAt(0) - 1\n\t\t\tlet value = prevValue\n\t\t\twhile (value \u003c= nextValue) {\n\t\t\t\tvalues.push(String.fromCharCode(value))\n\t\t\t\tvalue++\n\t\t\t}\n\t\t} else {\n\t\t\tvalues.push(pattern[i])\n\t\t}\n\t\ti++\n\t}\n\treturn values\n}\n\nconst ILLEGAL_CHARACTER_REGEXP = /[\\(\\)\\[\\]\\?\\:\\|]/\n\nconst OPERATOR = new RegExp(\n\t// any of:\n\t'(' +\n\t\t// or operator\n\t\t'\\\\|' +\n\t\t// or\n\t\t'|' +\n\t\t// or group start\n\t\t'\\\\(\\\\?\\\\:' +\n\t\t// or\n\t\t'|' +\n\t\t// or group end\n\t\t'\\\\)' +\n\t\t// or\n\t\t'|' +\n\t\t// one-of set start\n\t\t'\\\\[' +\n\t\t// or\n\t\t'|' +\n\t\t// one-of set end\n\t\t'\\\\]' +\n\t')'\n)\n\nfunction expandSingleElementArray(array) {\n\tif (array.length === 1) {\n\t\treturn array[0]\n\t}\n\treturn array\n}","import PatternParser from './AsYouTypeFormatter.PatternParser.js'\n\nexport default class PatternMatcher {\n\tconstructor(pattern) {\n\t\tthis.matchTree = new PatternParser().parse(pattern)\n\t}\n\n\tmatch(string, { allowOverflow } = {}) {\n\t\tif (!string) {\n\t\t\tthrow new Error('String is required')\n\t\t}\n\t\tconst result = match(string.split(''), this.matchTree, true)\n\t\tif (result \u0026\u0026 result.match) {\n\t\t\tdelete result.matchedChars\n\t\t}\n\t\tif (result \u0026\u0026 result.overflow) {\n\t\t\tif (!allowOverflow) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t\treturn result\n\t}\n}\n\n/**\n * Matches `characters` against a pattern compiled into a `tree`.\n * @param  {string[]} characters\n * @param  {Tree} tree — A pattern compiled into a `tree`. See the `*.d.ts` file for the description of the `tree` structure.\n * @param  {boolean} last — Whether it's the last (rightmost) subtree on its level of the match tree.\n * @return {object} See the `*.d.ts` file for the description of the result object.\n */\nfunction match(characters, tree, last) {\n\t// If `tree` is a string, then `tree` is a single character.\n\t// That's because when a pattern is parsed, multi-character-string parts\n\t// of a pattern are compiled into arrays of single characters.\n\t// I still wrote this piece of code for a \"general\" hypothetical case\n\t// when `tree` could be a string of several characters, even though\n\t// such case is not possible with the current implementation.\n\tif (typeof tree === 'string') {\n\t\tconst characterString = characters.join('')\n\t\tif (tree.indexOf(characterString) === 0) {\n\t\t\t// `tree` is always a single character.\n\t\t\t// If `tree.indexOf(characterString) === 0`\n\t\t\t// then `characters.length === tree.length`.\n\t\t\t/* istanbul ignore else */\n\t\t\tif (characters.length === tree.length) {\n\t\t\t\treturn {\n\t\t\t\t\tmatch: true,\n\t\t\t\t\tmatchedChars: characters\n\t\t\t\t}\n\t\t\t}\n\t\t\t// `tree` is always a single character.\n\t\t\t// If `tree.indexOf(characterString) === 0`\n\t\t\t// then `characters.length === tree.length`.\n\t\t\t/* istanbul ignore next */\n\t\t\treturn {\n\t\t\t\tpartialMatch: true,\n\t\t\t\t// matchedChars: characters\n\t\t\t}\n\t\t}\n\t\tif (characterString.indexOf(tree) === 0) {\n\t\t\tif (last) {\n\t\t\t\t// The `else` path is not possible because `tree` is always a single character.\n\t\t\t\t// The `else` case for `characters.length \u003e tree.length` would be\n\t\t\t\t// `characters.length \u003c= tree.length` which means `characters.length \u003c= 1`.\n\t\t\t\t// `characters` array can't be empty, so that means `characters === [tree]`,\n\t\t\t\t// which would also mean `tree.indexOf(characterString) === 0` and that'd mean\n\t\t\t\t// that the `if (tree.indexOf(characterString) === 0)` condition before this\n\t\t\t\t// `if` condition would be entered, and returned from there, not reaching this code.\n\t\t\t\t/* istanbul ignore else */\n\t\t\t\tif (characters.length \u003e tree.length) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\toverflow: true\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tmatch: true,\n\t\t\t\tmatchedChars: characters.slice(0, tree.length)\n\t\t\t}\n\t\t}\n\t\treturn\n\t}\n\n\tif (Array.isArray(tree)) {\n\t\tlet restCharacters = characters.slice()\n\t\tlet i = 0\n\t\twhile (i \u003c tree.length) {\n\t\t\tconst subtree = tree[i]\n\t\t\tconst result = match(restCharacters, subtree, last \u0026\u0026 (i === tree.length - 1))\n\t\t\tif (!result) {\n\t\t\t\treturn\n\t\t\t} else if (result.overflow) {\n\t\t\t\treturn result\n\t\t\t} else if (result.match) {\n\t\t\t\t// Continue with the next subtree with the rest of the characters.\n\t\t\t\trestCharacters = restCharacters.slice(result.matchedChars.length)\n\t\t\t\tif (restCharacters.length === 0) {\n\t\t\t\t\tif (i === tree.length - 1) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tmatch: true,\n\t\t\t\t\t\t\tmatchedChars: characters\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tpartialMatch: true,\n\t\t\t\t\t\t\t// matchedChars: characters\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t/* istanbul ignore else */\n\t\t\t\tif (result.partialMatch) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tpartialMatch: true,\n\t\t\t\t\t\t// matchedChars: characters\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(`Unsupported match result:\\n${JSON.stringify(result, null, 2)}`)\n\t\t\t\t}\n\t\t\t}\n\t\t\ti++\n\t\t}\n\t\t// If `last` then overflow has already been checked\n\t\t// by the last element of the `tree` array.\n\t\t/* istanbul ignore if */\n\t\tif (last) {\n\t\t\treturn {\n\t\t\t\toverflow: true\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tmatch: true,\n\t\t\tmatchedChars: characters.slice(0, characters.length - restCharacters.length)\n\t\t}\n\t}\n\n\tswitch (tree.op) {\n\t\tcase '|':\n\t\t\tlet partialMatch\n\t\t\tfor (const branch of tree.args) {\n\t\t\t\tconst result = match(characters, branch, last)\n\t\t\t\tif (result) {\n\t\t\t\t\tif (result.overflow) {\n\t\t\t\t\t\treturn result\n\t\t\t\t\t} else if (result.match) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tmatch: true,\n\t\t\t\t\t\t\tmatchedChars: result.matchedChars\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t/* istanbul ignore else */\n\t\t\t\t\t\tif (result.partialMatch) {\n\t\t\t\t\t\t\tpartialMatch = true\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthrow new Error(`Unsupported match result:\\n${JSON.stringify(result, null, 2)}`)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (partialMatch) {\n\t\t\t\treturn {\n\t\t\t\t\tpartialMatch: true,\n\t\t\t\t\t// matchedChars: ...\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Not even a partial match.\n\t\t\treturn\n\n\t\tcase '[]':\n\t\t\tfor (const char of tree.args) {\n\t\t\t\tif (characters[0] === char) {\n\t\t\t\t\tif (characters.length === 1) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tmatch: true,\n\t\t\t\t\t\t\tmatchedChars: characters\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (last) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\toverflow: true\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmatch: true,\n\t\t\t\t\t\tmatchedChars: [char]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// No character matches.\n\t\t\treturn\n\n\t\t/* istanbul ignore next */\n\t\tdefault:\n\t\t\tthrow new Error(`Unsupported instruction tree: ${tree}`)\n\t}\n}","import {\n\tDIGIT_PLACEHOLDER,\n\tcountOccurences,\n\trepeat,\n\tcutAndStripNonPairedParens,\n\tcloseNonPairedParens,\n\tstripNonPairedParens,\n\tpopulateTemplateWithDigits\n} from './AsYouTypeFormatter.util.js'\n\nimport formatCompleteNumber, {\n\tcanFormatCompleteNumber\n} from './AsYouTypeFormatter.complete.js'\n\nimport PatternMatcher from './AsYouTypeFormatter.PatternMatcher.js'\n\nimport parseDigits from './helpers/parseDigits.js'\nexport { DIGIT_PLACEHOLDER } from './AsYouTypeFormatter.util.js'\nimport { FIRST_GROUP_PATTERN } from './helpers/formatNationalNumberUsingFormat.js'\nimport { VALID_PUNCTUATION } from './constants.js'\nimport applyInternationalSeparatorStyle from './helpers/applyInternationalSeparatorStyle.js'\n\n// Used in phone number format template creation.\n// Could be any digit, I guess.\nconst DUMMY_DIGIT = '9'\n// I don't know why is it exactly `15`\nconst LONGEST_NATIONAL_PHONE_NUMBER_LENGTH = 15\n// Create a phone number consisting only of the digit 9 that matches the\n// `number_pattern` by applying the pattern to the \"longest phone number\" string.\nconst LONGEST_DUMMY_PHONE_NUMBER = repeat(DUMMY_DIGIT, LONGEST_NATIONAL_PHONE_NUMBER_LENGTH)\n\n// A set of characters that, if found in a national prefix formatting rules, are an indicator to\n// us that we should separate the national prefix from the number when formatting.\nconst NATIONAL_PREFIX_SEPARATORS_PATTERN = /[- ]/\n\n// Deprecated: Google has removed some formatting pattern related code from their repo.\n// https://github.com/googlei18n/libphonenumber/commit/a395b4fef3caf57c4bc5f082e1152a4d2bd0ba4c\n// \"We no longer have numbers in formatting matching patterns, only \\d.\"\n// Because this library supports generating custom metadata\n// some users may still be using old metadata so the relevant\n// code seems to stay until some next major version update.\nconst SUPPORT_LEGACY_FORMATTING_PATTERNS = true\n\n// A pattern that is used to match character classes in regular expressions.\n// An example of a character class is \"[1-4]\".\nconst CREATE_CHARACTER_CLASS_PATTERN = SUPPORT_LEGACY_FORMATTING_PATTERNS \u0026\u0026 (() =\u003e /\\[([^\\[\\]])*\\]/g)\n\n// Any digit in a regular expression that actually denotes a digit. For\n// example, in the regular expression \"80[0-2]\\d{6,10}\", the first 2 digits\n// (8 and 0) are standalone digits, but the rest are not.\n// Two look-aheads are needed because the number following \\\\d could be a\n// two-digit number, since the phone number can be as long as 15 digits.\nconst CREATE_STANDALONE_DIGIT_PATTERN = SUPPORT_LEGACY_FORMATTING_PATTERNS \u0026\u0026 (() =\u003e /\\d(?=[^,}][^,}])/g)\n\n// A regular expression that is used to determine if a `format` is\n// suitable to be used in the \"as you type formatter\".\n// A `format` is suitable when the resulting formatted number has\n// the same digits as the user has entered.\n//\n// In the simplest case, that would mean that the format\n// doesn't add any additional digits when formatting a number.\n// Google says that it also shouldn't add \"star\" (`*`) characters,\n// like it does in some Israeli formats.\n// Such basic format would only contain \"valid punctuation\"\n// and \"captured group\" identifiers ($1, $2, etc).\n//\n// An example of a format that adds additional digits:\n//\n// Country: `AR` (Argentina).\n// Format:\n// {\n//    \"pattern\": \"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\n//    \"leading_digits_patterns\": [\"91\"],\n//    \"national_prefix_formatting_rule\": \"0$1\",\n//    \"format\": \"$2 15-$3-$4\",\n//    \"international_format\": \"$1 $2 $3-$4\"\n// }\n//\n// In the format above, the `format` adds `15` to the digits when formatting a number.\n// A sidenote: this format actually is suitable because `national_prefix_for_parsing`\n// has previously removed `15` from a national number, so re-adding `15` in `format`\n// doesn't actually result in any extra digits added to user's input.\n// But verifying that would be a complex procedure, so the code chooses a simpler path:\n// it simply filters out all `format`s that contain anything but \"captured group\" ids.\n//\n// This regular expression is called `ELIGIBLE_FORMAT_PATTERN` in Google's\n// `libphonenumber` code.\n//\nconst NON_ALTERING_FORMAT_REG_EXP = new RegExp(\n\t'[' + VALID_PUNCTUATION + ']*' +\n\t// Google developers say:\n\t// \"We require that the first matching group is present in the\n\t//  output pattern to ensure no data is lost while formatting.\"\n\t'\\\\$1' +\n\t'[' + VALID_PUNCTUATION + ']*' +\n\t'(\\\\$\\\\d[' + VALID_PUNCTUATION + ']*)*' +\n\t'$'\n)\n\n// This is the minimum length of the leading digits of a phone number\n// to guarantee the first \"leading digits pattern\" for a phone number format\n// to be preemptive.\nconst MIN_LEADING_DIGITS_LENGTH = 3\n\nexport default class AsYouTypeFormatter {\n\tconstructor({\n\t\tstate,\n\t\tmetadata\n\t}) {\n\t\tthis.metadata = metadata\n\t\tthis.resetFormat()\n\t}\n\n\tresetFormat() {\n\t\tthis.chosenFormat = undefined\n\t\tthis.template = undefined\n\t\tthis.nationalNumberTemplate = undefined\n\t\tthis.populatedNationalNumberTemplate = undefined\n\t\tthis.populatedNationalNumberTemplatePosition = -1\n\t}\n\n\treset(numberingPlan, state) {\n\t\tthis.resetFormat()\n\t\tif (numberingPlan) {\n\t\t\tthis.isNANP = numberingPlan.callingCode() === '1'\n\t\t\tthis.matchingFormats = numberingPlan.formats()\n\t\t\tif (state.nationalSignificantNumber) {\n\t\t\t\tthis.narrowDownMatchingFormats(state)\n\t\t\t}\n\t\t} else {\n\t\t\tthis.isNANP = undefined\n\t\t\tthis.matchingFormats = []\n\t\t}\n\t}\n\n\t/**\n\t * Formats an updated phone number.\n\t * @param  {string} nextDigits — Additional phone number digits.\n\t * @param  {object} state — `AsYouType` state.\n\t * @return {[string]} Returns undefined if the updated phone number can't be formatted using any of the available formats.\n\t */\n\tformat(nextDigits, state) {\n\t\t// See if the phone number digits can be formatted as a complete phone number.\n\t\t// If not, use the results from `formatNationalNumberWithNextDigits()`,\n\t\t// which formats based on the chosen formatting pattern.\n\t\t//\n\t\t// Attempting to format complete phone number first is how it's done\n\t\t// in Google's `libphonenumber`, so this library just follows it.\n\t\t// Google's `libphonenumber` code doesn't explain in detail why does it\n\t\t// attempt to format digits as a complete phone number\n\t\t// instead of just going with a previoulsy (or newly) chosen `format`:\n\t\t//\n\t\t// \"Checks to see if there is an exact pattern match for these digits.\n\t\t//  If so, we should use this instead of any other formatting template\n\t\t//  whose leadingDigitsPattern also matches the input.\"\n\t\t//\n\t\tif (canFormatCompleteNumber(state.nationalSignificantNumber, this.metadata)) {\n\t\t\tfor (const format of this.matchingFormats) {\n\t\t\t\tconst formattedCompleteNumber = formatCompleteNumber(\n\t\t\t\t\tstate,\n\t\t\t\t\tformat,\n\t\t\t\t\t{\n\t\t\t\t\t\tmetadata: this.metadata,\n\t\t\t\t\t\tshouldTryNationalPrefixFormattingRule: (format) =\u003e this.shouldTryNationalPrefixFormattingRule(format, {\n\t\t\t\t\t\t\tinternational: state.international,\n\t\t\t\t\t\t\tnationalPrefix: state.nationalPrefix\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tgetSeparatorAfterNationalPrefix: (format) =\u003e this.getSeparatorAfterNationalPrefix(format)\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\tif (formattedCompleteNumber) {\n\t\t\t\t\tthis.resetFormat()\n\t\t\t\t\tthis.chosenFormat = format\n\t\t\t\t\tthis.setNationalNumberTemplate(formattedCompleteNumber.replace(/\\d/g, DIGIT_PLACEHOLDER), state)\n\t\t\t\t\tthis.populatedNationalNumberTemplate = formattedCompleteNumber\n\t\t\t\t\t// With a new formatting template, the matched position\n\t\t\t\t\t// using the old template needs to be reset.\n\t\t\t\t\tthis.populatedNationalNumberTemplatePosition = this.template.lastIndexOf(DIGIT_PLACEHOLDER)\n\t\t\t\t\treturn formattedCompleteNumber\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\t\t// Format the digits as a partial (incomplete) phone number\n\t\t// using the previously chosen formatting pattern (or a newly chosen one).\n\t\treturn this.formatNationalNumberWithNextDigits(nextDigits, state)\n\t}\n\n\t// Formats the next phone number digits.\n\tformatNationalNumberWithNextDigits(nextDigits, state) {\n\t\tconst previouslyChosenFormat = this.chosenFormat\n\n\t\t// Choose a format from the list of matching ones.\n\t\tconst newlyChosenFormat = this.chooseFormat(state)\n\n\t\tif (newlyChosenFormat) {\n\t\t\tif (newlyChosenFormat === previouslyChosenFormat) {\n\t\t\t\t// If it can format the next (current) digits\n\t\t\t\t// using the previously chosen phone number format\n\t\t\t\t// then return the updated formatted number.\n\t\t\t\treturn this.formatNextNationalNumberDigits(nextDigits)\n\t\t\t} else {\n\t\t\t\t// If a more appropriate phone number format\n\t\t\t\t// has been chosen for these \"leading digits\",\n\t\t\t\t// then re-format the national phone number part\n\t\t\t\t// using the newly selected format.\n\t\t\t\treturn this.formatNextNationalNumberDigits(state.getNationalDigits())\n\t\t\t}\n\t\t}\n\t}\n\n\tnarrowDownMatchingFormats({\n\t\tnationalSignificantNumber,\n\t\tnationalPrefix,\n\t\tinternational\n\t}) {\n\t\tconst leadingDigits = nationalSignificantNumber\n\n\t\t// \"leading digits\" pattern list starts with a\n\t\t// \"leading digits\" pattern fitting a maximum of 3 leading digits.\n\t\t// So, after a user inputs 3 digits of a national (significant) phone number\n\t\t// this national (significant) number can already be formatted.\n\t\t// The next \"leading digits\" pattern is for 4 leading digits max,\n\t\t// and the \"leading digits\" pattern after it is for 5 leading digits max, etc.\n\n\t\t// This implementation is different from Google's\n\t\t// in that it searches for a fitting format\n\t\t// even if the user has entered less than\n\t\t// `MIN_LEADING_DIGITS_LENGTH` digits of a national number.\n\t\t// Because some leading digit patterns already match for a single first digit.\n\t\tlet leadingDigitsPatternIndex = leadingDigits.length - MIN_LEADING_DIGITS_LENGTH\n\t\tif (leadingDigitsPatternIndex \u003c 0) {\n\t\t\tleadingDigitsPatternIndex = 0\n\t\t}\n\n\t\tthis.matchingFormats = this.matchingFormats.filter(\n\t\t\tformat =\u003e this.formatSuits(format, international, nationalPrefix)\n\t\t\t\t\u0026\u0026 this.formatMatches(format, leadingDigits, leadingDigitsPatternIndex)\n\t\t)\n\n\t\t// If there was a phone number format chosen\n\t\t// and it no longer holds given the new leading digits then reset it.\n\t\t// The test for this `if` condition is marked as:\n\t\t// \"Reset a chosen format when it no longer holds given the new leading digits\".\n\t\t// To construct a valid test case for this one can find a country\n\t\t// in `PhoneNumberMetadata.xml` yielding one format for 3 `\u003cleadingDigits\u003e`\n\t\t// and yielding another format for 4 `\u003cleadingDigits\u003e` (Australia in this case).\n\t\tif (this.chosenFormat \u0026\u0026 this.matchingFormats.indexOf(this.chosenFormat) === -1) {\n\t\t\tthis.resetFormat()\n\t\t}\n\t}\n\n\tformatSuits(format, international, nationalPrefix) {\n\t\t// When a prefix before a national (significant) number is\n\t\t// simply a national prefix, then it's parsed as `this.nationalPrefix`.\n\t\t// In more complex cases, a prefix before national (significant) number\n\t\t// could include a national prefix as well as some \"capturing groups\",\n\t\t// and in that case there's no info whether a national prefix has been parsed.\n\t\t// If national prefix is not used when formatting a phone number\n\t\t// using this format, but a national prefix has been entered by the user,\n\t\t// and was extracted, then discard such phone number format.\n\t\t// In Google's \"AsYouType\" formatter code, the equivalent would be this part:\n\t\t// https://github.com/google/libphonenumber/blob/0a45cfd96e71cad8edb0e162a70fcc8bd9728933/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L175-L184\n\t\tif (nationalPrefix \u0026\u0026\n\t\t\t!format.usesNationalPrefix() \u0026\u0026\n\t\t\t// !format.domesticCarrierCodeFormattingRule() \u0026\u0026\n\t\t\t!format.nationalPrefixIsOptionalWhenFormattingInNationalFormat()) {\n\t\t\treturn false\n\t\t}\n\t\t// If national prefix is mandatory for this phone number format\n\t\t// and there're no guarantees that a national prefix is present in user input\n\t\t// then discard this phone number format as not suitable.\n\t\t// In Google's \"AsYouType\" formatter code, the equivalent would be this part:\n\t\t// https://github.com/google/libphonenumber/blob/0a45cfd96e71cad8edb0e162a70fcc8bd9728933/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L185-L193\n\t\tif (!international \u0026\u0026\n\t\t\t!nationalPrefix \u0026\u0026\n\t\t\tformat.nationalPrefixIsMandatoryWhenFormattingInNationalFormat()) {\n\t\t\treturn false\n\t\t}\n\t\treturn true\n\t}\n\n\tformatMatches(format, leadingDigits, leadingDigitsPatternIndex) {\n\t\tconst leadingDigitsPatternsCount = format.leadingDigitsPatterns().length\n\n\t\t// If this format is not restricted to a certain\n\t\t// leading digits pattern then it fits.\n\t\t// The test case could be found by searching for \"leadingDigitsPatternsCount === 0\".\n\t\tif (leadingDigitsPatternsCount === 0) {\n\t\t\treturn true\n\t\t}\n\n\t\t// Start narrowing down the list of possible formats based on the leading digits.\n\t\t// (only previously matched formats take part in the narrowing down process)\n\n\t\t// `leading_digits_patterns` start with 3 digits min\n\t\t// and then go up from there one digit at a time.\n\t\tleadingDigitsPatternIndex = Math.min(leadingDigitsPatternIndex, leadingDigitsPatternsCount - 1)\n\t\tconst leadingDigitsPattern = format.leadingDigitsPatterns()[leadingDigitsPatternIndex]\n\n\t\t// Google imposes a requirement on the leading digits\n\t\t// to be minimum 3 digits long in order to be eligible\n\t\t// for checking those with a leading digits pattern.\n\t\t//\n\t\t// Since `leading_digits_patterns` start with 3 digits min,\n\t\t// Google's original `libphonenumber` library only starts\n\t\t// excluding any non-matching formats only when the\n\t\t// national number entered so far is at least 3 digits long,\n\t\t// otherwise format matching would give false negatives.\n\t\t//\n\t\t// For example, when the digits entered so far are `2`\n\t\t// and the leading digits pattern is `21` –\n\t\t// it's quite obvious in this case that the format could be the one\n\t\t// but due to the absence of further digits it would give false negative.\n\t\t//\n\t\t// Also, `leading_digits_patterns` doesn't always correspond to a single\n\t\t// digits count. For example, `60|8` pattern would already match `8`\n\t\t// but the `60` part would require having at least two leading digits,\n\t\t// so the whole pattern would require inputting two digits first in order to\n\t\t// decide on whether it matches the input, even when the input is \"80\".\n\t\t//\n\t\t// This library — `libphonenumber-js` — allows filtering by `leading_digits_patterns`\n\t\t// even when there's only 1 or 2 digits of the national (significant) number.\n\t\t// To do that, it uses a non-strict pattern matcher written specifically for that.\n\t\t//\n\t\tif (leadingDigits.length \u003c MIN_LEADING_DIGITS_LENGTH) {\n\t\t\t// Before leading digits \u003c 3 matching was implemented:\n\t\t\t// return true\n\t\t\t//\n\t\t\t// After leading digits \u003c 3 matching was implemented:\n\t\t\ttry {\n\t\t\t\treturn new PatternMatcher(leadingDigitsPattern).match(leadingDigits, { allowOverflow: true }) !== undefined\n\t\t\t} catch (error) /* istanbul ignore next */ {\n\t\t\t\t// There's a slight possibility that there could be some undiscovered bug\n\t\t\t\t// in the pattern matcher code. Since the \"leading digits \u003c 3 matching\"\n\t\t\t\t// feature is not \"essential\" for operation, it can fall back to the old way\n\t\t\t\t// in case of any issues rather than halting the application's execution.\n\t\t\t\tconsole.error(error)\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\n\t\t// If at least `MIN_LEADING_DIGITS_LENGTH` digits of a national number are\n\t\t// available then use the usual regular expression matching.\n\t\t//\n\t\t// The whole pattern is wrapped in round brackets (`()`) because\n\t\t// the pattern can use \"or\" operator (`|`) at the top level of the pattern.\n\t\t//\n\t\treturn new RegExp(`^(${leadingDigitsPattern})`).test(leadingDigits)\n\t}\n\n\tgetFormatFormat(format, international) {\n\t\treturn international ? format.internationalFormat() : format.format()\n\t}\n\n\tchooseFormat(state) {\n\t\t// When there are multiple available formats, the formatter uses the first\n\t\t// format where a formatting template could be created.\n\t\t//\n\t\t// For some weird reason, `istanbul` says \"else path not taken\"\n\t\t// for the `for of` line below. Supposedly that means that\n\t\t// the loop doesn't ever go over the last element in the list.\n\t\t// That's true because there always is `this.chosenFormat`\n\t\t// when `this.matchingFormats` is non-empty.\n\t\t// And, for some weird reason, it doesn't think that the case\n\t\t// with empty `this.matchingFormats` qualifies for a valid \"else\" path.\n\t\t// So simply muting this `istanbul` warning.\n\t\t// It doesn't skip the contents of the `for of` loop,\n\t\t// it just skips the `for of` line.\n\t\t//\n\t\t/* istanbul ignore next */\n\t\tfor (const format of this.matchingFormats.slice()) {\n\t\t\t// If this format is currently being used\n\t\t\t// and is still suitable, then stick to it.\n\t\t\tif (this.chosenFormat === format) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// Sometimes, a formatting rule inserts additional digits in a phone number,\n\t\t\t// and \"as you type\" formatter can't do that: it should only use the digits\n\t\t\t// that the user has input.\n\t\t\t//\n\t\t\t// For example, in Argentina, there's a format for mobile phone numbers:\n\t\t\t//\n\t\t\t// {\n\t\t\t//    \"pattern\": \"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\n\t\t\t//    \"leading_digits_patterns\": [\"91\"],\n\t\t\t//    \"national_prefix_formatting_rule\": \"0$1\",\n\t\t\t//    \"format\": \"$2 15-$3-$4\",\n\t\t\t//    \"international_format\": \"$1 $2 $3-$4\"\n\t\t\t// }\n\t\t\t//\n\t\t\t// In that format, `international_format` is used instead of `format`\n\t\t\t// because `format` inserts `15` in the formatted number,\n\t\t\t// and `AsYouType` formatter should only use the digits\n\t\t\t// the user has actually input, without adding any extra digits.\n\t\t\t// In this case, it wouldn't make a difference, because the `15`\n\t\t\t// is first stripped when applying `national_prefix_for_parsing`\n\t\t\t// and then re-added when using `format`, so in reality it doesn't\n\t\t\t// add any new digits to the number, but to detect that, the code\n\t\t\t// would have to be more complex: it would have to try formatting\n\t\t\t// the digits using the format and then see if any digits have\n\t\t\t// actually been added or removed, and then, every time a new digit\n\t\t\t// is input, it should re-check whether the chosen format doesn't\n\t\t\t// alter the digits.\n\t\t\t//\n\t\t\t// Google's code doesn't go that far, and so does this library:\n\t\t\t// it simply requires that a `format` doesn't add any additonal\n\t\t\t// digits to user's input.\n\t\t\t//\n\t\t\t// Also, people in general should move from inputting phone numbers\n\t\t\t// in national format (possibly with national prefixes)\n\t\t\t// and use international phone number format instead:\n\t\t\t// it's a logical thing in the modern age of mobile phones,\n\t\t\t// globalization and the internet.\n\t\t\t//\n\t\t\t/* istanbul ignore if */\n\t\t\tif (!NON_ALTERING_FORMAT_REG_EXP.test(this.getFormatFormat(format, state.international))) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (!this.createTemplateForFormat(format, state)) {\n\t\t\t\t// Remove the format if it can't generate a template.\n\t\t\t\tthis.matchingFormats = this.matchingFormats.filter(_ =\u003e _ !== format)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tthis.chosenFormat = format\n\t\t\tbreak\n\t\t}\n\t\tif (!this.chosenFormat) {\n\t\t\t// No format matches the national (significant) phone number.\n\t\t\tthis.resetFormat()\n\t\t}\n\t\treturn this.chosenFormat\n\t}\n\n\tcreateTemplateForFormat(format, state) {\n\t\t// The formatter doesn't format numbers when numberPattern contains '|', e.g.\n\t\t// (20|3)\\d{4}. In those cases we quickly return.\n\t\t// (Though there's no such format in current metadata)\n\t\t/* istanbul ignore if */\n\t\tif (SUPPORT_LEGACY_FORMATTING_PATTERNS \u0026\u0026 format.pattern().indexOf('|') \u003e= 0) {\n\t\t\treturn\n\t\t}\n\t\t// Get formatting template for this phone number format\n\t\tconst template = this.getTemplateForFormat(format, state)\n\t\t// If the national number entered is too long\n\t\t// for any phone number format, then abort.\n\t\tif (template) {\n\t\t\tthis.setNationalNumberTemplate(template, state)\n\t\t\treturn true\n\t\t}\n\t}\n\n\tgetSeparatorAfterNationalPrefix(format) {\n\t\t// `US` metadata doesn't have a `national_prefix_formatting_rule`,\n\t\t// so the `if` condition below doesn't apply to `US`,\n\t\t// but in reality there shoudl be a separator\n\t\t// between a national prefix and a national (significant) number.\n\t\t// So `US` national prefix separator is a \"special\" \"hardcoded\" case.\n\t\tif (this.isNANP) {\n\t\t\treturn ' '\n\t\t}\n\t\t// If a `format` has a `national_prefix_formatting_rule`\n\t\t// and that rule has a separator after a national prefix,\n\t\t// then it means that there should be a separator\n\t\t// between a national prefix and a national (significant) number.\n\t\tif (format \u0026\u0026\n\t\t\tformat.nationalPrefixFormattingRule() \u0026\u0026\n\t\t\tNATIONAL_PREFIX_SEPARATORS_PATTERN.test(format.nationalPrefixFormattingRule())) {\n\t\t\treturn ' '\n\t\t}\n\t\t// At this point, there seems to be no clear evidence that\n\t\t// there should be a separator between a national prefix\n\t\t// and a national (significant) number. So don't insert one.\n\t\treturn ''\n\t}\n\n\tgetInternationalPrefixBeforeCountryCallingCode({ IDDPrefix, missingPlus }, options) {\n\t\tif (IDDPrefix) {\n\t\t\treturn options \u0026\u0026 options.spacing === false ? IDDPrefix : IDDPrefix + ' '\n\t\t}\n\t\tif (missingPlus) {\n\t\t\treturn ''\n\t\t}\n\t\treturn '+'\n\t}\n\n\tgetTemplate(state) {\n\t\tif (!this.template) {\n\t\t\treturn\n\t\t}\n\t\t// `this.template` holds the template for a \"complete\" phone number.\n\t\t// The currently entered phone number is most likely not \"complete\",\n\t\t// so trim all non-populated digits.\n\t\tlet index = -1\n\t\tlet i = 0\n\t\tconst internationalPrefix = state.international ? this.getInternationalPrefixBeforeCountryCallingCode(state, { spacing: false }) : ''\n\t\twhile (i \u003c internationalPrefix.length + state.getDigitsWithoutInternationalPrefix().length) {\n\t\t\tindex = this.template.indexOf(DIGIT_PLACEHOLDER, index + 1)\n\t\t\ti++\n\t\t}\n\t\treturn cutAndStripNonPairedParens(this.template, index + 1)\n\t}\n\n\tsetNationalNumberTemplate(template, state) {\n\t\tthis.nationalNumberTemplate = template\n\t\tthis.populatedNationalNumberTemplate = template\n\t\t// With a new formatting template, the matched position\n\t\t// using the old template needs to be reset.\n\t\tthis.populatedNationalNumberTemplatePosition = -1\n\t\t// For convenience, the public `.template` property\n\t\t// contains the whole international number\n\t\t// if the phone number being input is international:\n\t\t// 'x' for the '+' sign, 'x'es for the country phone code,\n\t\t// a spacebar and then the template for the formatted national number.\n\t\tif (state.international) {\n\t\t\tthis.template =\n\t\t\t\tthis.getInternationalPrefixBeforeCountryCallingCode(state).replace(/[\\d\\+]/g, DIGIT_PLACEHOLDER) +\n\t\t\t\trepeat(DIGIT_PLACEHOLDER, state.callingCode.length) +\n\t\t\t\t' ' +\n\t\t\t\ttemplate\n\t\t} else {\n\t\t\tthis.template = template\n\t\t}\n\t}\n\n\t/**\n\t * Generates formatting template for a national phone number,\n\t * optionally containing a national prefix, for a format.\n\t * @param  {Format} format\n\t * @param  {string} nationalPrefix\n\t * @return {string}\n\t */\n\tgetTemplateForFormat(format, {\n\t\tnationalSignificantNumber,\n\t\tinternational,\n\t\tnationalPrefix,\n\t\tprefixBeforeNationalSignificantNumberThatIsNotNationalPrefix\n\t}) {\n\t\tlet pattern = format.pattern()\n\n\t\t/* istanbul ignore else */\n\t\tif (SUPPORT_LEGACY_FORMATTING_PATTERNS) {\n\t\t\tpattern = pattern\n\t\t\t\t// Replace anything in the form of [..] with \\d\n\t\t\t\t.replace(CREATE_CHARACTER_CLASS_PATTERN(), '\\\\d')\n\t\t\t\t// Replace any standalone digit (not the one in `{}`) with \\d\n\t\t\t\t.replace(CREATE_STANDALONE_DIGIT_PATTERN(), '\\\\d')\n\t\t}\n\n\t\t// Generate a dummy national number (consisting of `9`s)\n\t\t// that fits this format's `pattern`.\n\t\t//\n\t\t// This match will always succeed,\n\t\t// because the \"longest dummy phone number\"\n\t\t// has enough length to accomodate any possible\n\t\t// national phone number format pattern.\n\t\t//\n\t\tlet digits = LONGEST_DUMMY_PHONE_NUMBER.match(pattern)[0]\n\n\t\t// If the national number entered is too long\n\t\t// for any phone number format, then abort.\n\t\tif (nationalSignificantNumber.length \u003e digits.length) {\n\t\t\treturn\n\t\t}\n\n\t\t// Get a formatting template which can be used to efficiently format\n\t\t// a partial number where digits are added one by one.\n\n\t\t// Below `strictPattern` is used for the\n\t\t// regular expression (with `^` and `$`).\n\t\t// This wasn't originally in Google's `libphonenumber`\n\t\t// and I guess they don't really need it\n\t\t// because they're not using \"templates\" to format phone numbers\n\t\t// but I added `strictPattern` after encountering\n\t\t// South Korean phone number formatting bug.\n\t\t//\n\t\t// Non-strict regular expression bug demonstration:\n\t\t//\n\t\t// this.nationalSignificantNumber : `111111111` (9 digits)\n\t\t//\n\t\t// pattern : (\\d{2})(\\d{3,4})(\\d{4})\n\t\t// format : `$1 $2 $3`\n\t\t// digits : `9999999999` (10 digits)\n\t\t//\n\t\t// '9999999999'.replace(new RegExp(/(\\d{2})(\\d{3,4})(\\d{4})/g), '$1 $2 $3') = \"99 9999 9999\"\n\t\t//\n\t\t// template : xx xxxx xxxx\n\t\t//\n\t\t// But the correct template in this case is `xx xxx xxxx`.\n\t\t// The template was generated incorrectly because of the\n\t\t// `{3,4}` variability in the `pattern`.\n\t\t//\n\t\t// The fix is, if `this.nationalSignificantNumber` has already sufficient length\n\t\t// to satisfy the `pattern` completely then `this.nationalSignificantNumber`\n\t\t// is used instead of `digits`.\n\n\t\tconst strictPattern = new RegExp('^' + pattern + '$')\n\t\tconst nationalNumberDummyDigits = nationalSignificantNumber.replace(/\\d/g, DUMMY_DIGIT)\n\n\t\t// If `this.nationalSignificantNumber` has already sufficient length\n\t\t// to satisfy the `pattern` completely then use it\n\t\t// instead of `digits`.\n\t\tif (strictPattern.test(nationalNumberDummyDigits)) {\n\t\t\tdigits = nationalNumberDummyDigits\n\t\t}\n\n\t\tlet numberFormat = this.getFormatFormat(format, international)\n\t\tlet nationalPrefixIncludedInTemplate\n\n\t\t// If a user did input a national prefix (and that's guaranteed),\n\t\t// and if a `format` does have a national prefix formatting rule,\n\t\t// then see if that national prefix formatting rule\n\t\t// prepends exactly the same national prefix the user has input.\n\t\t// If that's the case, then use the `format` with the national prefix formatting rule.\n\t\t// Otherwise, use  the `format` without the national prefix formatting rule,\n\t\t// and prepend a national prefix manually to it.\n\t\tif (this.shouldTryNationalPrefixFormattingRule(format, { international, nationalPrefix })) {\n\t\t\tconst numberFormatWithNationalPrefix = numberFormat.replace(\n\t\t\t\tFIRST_GROUP_PATTERN,\n\t\t\t\tformat.nationalPrefixFormattingRule()\n\t\t\t)\n\t\t\t// If `national_prefix_formatting_rule` of a `format` simply prepends\n\t\t\t// national prefix at the start of a national (significant) number,\n\t\t\t// then such formatting can be used with `AsYouType` formatter.\n\t\t\t// There seems to be no `else` case: everywhere in metadata,\n\t\t\t// national prefix formatting rule is national prefix + $1,\n\t\t\t// or `($1)`, in which case such format isn't even considered\n\t\t\t// when the user has input a national prefix.\n\t\t\t/* istanbul ignore else */\n\t\t\tif (parseDigits(format.nationalPrefixFormattingRule()) === (nationalPrefix || '') + parseDigits('$1')) {\n\t\t\t\tnumberFormat = numberFormatWithNationalPrefix\n\t\t\t\tnationalPrefixIncludedInTemplate = true\n\t\t\t\t// Replace all digits of the national prefix in the formatting template\n\t\t\t\t// with `DIGIT_PLACEHOLDER`s.\n\t\t\t\tif (nationalPrefix) {\n\t\t\t\t\tlet i = nationalPrefix.length\n\t\t\t\t\twhile (i \u003e 0) {\n\t\t\t\t\t\tnumberFormat = numberFormat.replace(/\\d/, DIGIT_PLACEHOLDER)\n\t\t\t\t\t\ti--\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Generate formatting template for this phone number format.\n\t\tlet template = digits\n\t\t\t// Format the dummy phone number according to the format.\n\t\t\t.replace(new RegExp(pattern), numberFormat)\n\t\t\t// Replace each dummy digit with a DIGIT_PLACEHOLDER.\n\t\t\t.replace(new RegExp(DUMMY_DIGIT, 'g'), DIGIT_PLACEHOLDER)\n\n\t\t// If a prefix of a national (significant) number is not as simple\n\t\t// as just a basic national prefix, then just prepend such prefix\n\t\t// before the national (significant) number, optionally spacing\n\t\t// the two with a whitespace.\n\t\tif (!nationalPrefixIncludedInTemplate) {\n\t\t\tif (prefixBeforeNationalSignificantNumberThatIsNotNationalPrefix) {\n\t\t\t\t// Prepend the prefix to the template manually.\n\t\t\t\ttemplate = repeat(DIGIT_PLACEHOLDER, prefixBeforeNationalSignificantNumberThatIsNotNationalPrefix.length) +\n\t\t\t\t\t' ' +\n\t\t\t\t\ttemplate\n\t\t\t} else if (nationalPrefix) {\n\t\t\t\t// Prepend national prefix to the template manually.\n\t\t\t\ttemplate = repeat(DIGIT_PLACEHOLDER, nationalPrefix.length) +\n\t\t\t\t\tthis.getSeparatorAfterNationalPrefix(format) +\n\t\t\t\t\ttemplate\n\t\t\t}\n\t\t}\n\n\t\tif (international) {\n\t\t\ttemplate = applyInternationalSeparatorStyle(template)\n\t\t}\n\n\t\treturn template\n\t}\n\n\tformatNextNationalNumberDigits(digits) {\n\t\tconst result = populateTemplateWithDigits(\n\t\t\tthis.populatedNationalNumberTemplate,\n\t\t\tthis.populatedNationalNumberTemplatePosition,\n\t\t\tdigits\n\t\t)\n\n\t\tif (!result) {\n\t\t\t// Reset the format.\n\t\t\tthis.resetFormat()\n\t\t\treturn\n\t\t}\n\n\t\tthis.populatedNationalNumberTemplate = result[0]\n\t\tthis.populatedNationalNumberTemplatePosition = result[1]\n\n\t\t// Return the formatted phone number so far.\n\t\treturn cutAndStripNonPairedParens(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition + 1)\n\n\t\t// The old way which was good for `input-format` but is not so good\n\t\t// for `react-phone-number-input`'s default input (`InputBasic`).\n\t\t// return closeNonPairedParens(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition + 1)\n\t\t// \t.replace(new RegExp(DIGIT_PLACEHOLDER, 'g'), ' ')\n\t}\n\n\tshouldTryNationalPrefixFormattingRule(format, { international, nationalPrefix }) {\n\t\tif (format.nationalPrefixFormattingRule()) {\n\t\t\t// In some countries, `national_prefix_formatting_rule` is `($1)`,\n\t\t\t// so it applies even if the user hasn't input a national prefix.\n\t\t\t// `format.usesNationalPrefix()` detects such cases.\n\t\t\tconst usesNationalPrefix = format.usesNationalPrefix()\n\t\t\tif ((usesNationalPrefix \u0026\u0026 nationalPrefix) ||\n\t\t\t\t(!usesNationalPrefix \u0026\u0026 !international)) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t}\n}","import extractCountryCallingCode from './helpers/extractCountryCallingCode.js'\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js'\nimport extractNationalNumberFromPossiblyIncompleteNumber from './helpers/extractNationalNumberFromPossiblyIncompleteNumber.js'\nimport stripIddPrefix from './helpers/stripIddPrefix.js'\nimport parseDigits from './helpers/parseDigits.js'\n\nimport {\n\tVALID_DIGITS,\n\tVALID_PUNCTUATION,\n\tPLUS_CHARS\n} from './constants.js'\n\nconst VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART =\n\t'[' +\n\t\tVALID_PUNCTUATION +\n\t\tVALID_DIGITS +\n\t']+'\n\nconst VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN = new RegExp('^' + VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART + '$', 'i')\n\nconst VALID_FORMATTED_PHONE_NUMBER_PART =\n\t'(?:' +\n\t\t'[' + PLUS_CHARS + ']' +\n\t\t'[' +\n\t\t\tVALID_PUNCTUATION +\n\t\t\tVALID_DIGITS +\n\t\t']*' +\n\t\t'|' +\n\t\t'[' +\n\t\t\tVALID_PUNCTUATION +\n\t\t\tVALID_DIGITS +\n\t\t']+' +\n\t')'\n\nconst AFTER_PHONE_NUMBER_DIGITS_END_PATTERN = new RegExp(\n\t'[^' +\n\t\tVALID_PUNCTUATION +\n\t\tVALID_DIGITS +\n\t']+' +\n\t'.*' +\n\t'$'\n)\n\n// Tests whether `national_prefix_for_parsing` could match\n// different national prefixes.\n// Matches anything that's not a digit or a square bracket.\nconst COMPLEX_NATIONAL_PREFIX = /[^\\d\\[\\]]/\n\nexport default class AsYouTypeParser {\n\tconstructor({\n\t\tdefaultCountry,\n\t\tdefaultCallingCode,\n\t\tmetadata,\n\t\tonNationalSignificantNumberChange\n\t}) {\n\t\tthis.defaultCountry = defaultCountry\n\t\tthis.defaultCallingCode = defaultCallingCode\n\t\tthis.metadata = metadata\n\t\tthis.onNationalSignificantNumberChange = onNationalSignificantNumberChange\n\t}\n\n\tinput(text, state) {\n\t\tconst [formattedDigits, hasPlus] = extractFormattedDigitsAndPlus(text)\n\t\tconst digits = parseDigits(formattedDigits)\n\t\t// Checks for a special case: just a leading `+` has been entered.\n\t\tlet justLeadingPlus\n\t\tif (hasPlus) {\n\t\t\tif (!state.digits) {\n\t\t\t\tstate.startInternationalNumber(undefined, undefined)\n\t\t\t\tif (!digits) {\n\t\t\t\t\tjustLeadingPlus = true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (digits) {\n\t\t\tthis.inputDigits(digits, state)\n\t\t}\n\t\treturn {\n\t\t\tdigits,\n\t\t\tjustLeadingPlus\n\t\t}\n\t}\n\n\t/**\n\t * Inputs \"next\" phone number digits.\n\t * @param  {string} digits\n\t * @return {string} [formattedNumber] Formatted national phone number (if it can be formatted at this stage). Returning `undefined` means \"don't format the national phone number at this stage\".\n\t */\n\tinputDigits(nextDigits, state) {\n\t\tconst { digits } = state\n\t\tconst hasReceivedThreeLeadingDigits = digits.length \u003c 3 \u0026\u0026 digits.length + nextDigits.length \u003e= 3\n\n\t\t// Append phone number digits.\n\t\tstate.appendDigits(nextDigits)\n\n\t\t// Attempt to extract IDD prefix:\n\t\t// Some users input their phone number in international format,\n\t\t// but in an \"out-of-country\" dialing format instead of using the leading `+`.\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/185\n\t\t// Detect such numbers as soon as there're at least 3 digits.\n\t\t// Google's library attempts to extract IDD prefix at 3 digits,\n\t\t// so this library just copies that behavior.\n\t\t// I guess that's because the most commot IDD prefixes are\n\t\t// `00` (Europe) and `011` (US).\n\t\t// There exist really long IDD prefixes too:\n\t\t// for example, in Australia the default IDD prefix is `0011`,\n\t\t// and it could even be as long as `14880011`.\n\t\t// An IDD prefix is extracted here, and then every time when\n\t\t// there's a new digit and the number couldn't be formatted.\n\t\tif (hasReceivedThreeLeadingDigits) {\n\t\t\tthis.extractIddPrefix(state)\n\t\t}\n\n\t\tif (this.isWaitingForCountryCallingCode(state)) {\n\t\t\tif (!this.extractCountryCallingCode(state)) {\n\t\t\t\treturn\n\t\t\t}\n\t\t} else {\n\t\t\tstate.appendNationalSignificantNumberDigits(nextDigits)\n\t\t}\n\n\t\t// If a phone number is being input in international format,\n\t\t// then it's not valid for it to have a national prefix.\n\t\t// Still, some people incorrectly input such numbers with a national prefix.\n\t\t// In such cases, only attempt to strip a national prefix if the number becomes too long.\n\t\t// (but that is done later, not here)\n\t\tif (!state.international) {\n\t\t\tif (!this.hasExtractedNationalSignificantNumber) {\n\t\t\t\tthis.extractNationalSignificantNumber(\n\t\t\t\t\tstate.getNationalDigits(),\n\t\t\t\t\t(stateUpdate) =\u003e state.update(stateUpdate)\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t}\n\n\tisWaitingForCountryCallingCode({ international, callingCode }) {\n\t\treturn international \u0026\u0026 !callingCode\n\t}\n\n\t// Extracts a country calling code from a number\n\t// being entered in internatonal format.\n\textractCountryCallingCode(state) {\n\t\tconst { countryCallingCode, number } = extractCountryCallingCode(\n\t\t\t'+' + state.getDigitsWithoutInternationalPrefix(),\n\t\t\tstate.country,\n\t\t\tthis.defaultCountry,\n\t\t\tthis.defaultCallingCode,\n\t\t\tthis.metadata.metadata\n\t\t)\n\t\tif (countryCallingCode) {\n\t\t\tstate.setCallingCode(countryCallingCode)\n\t\t\tstate.update({\n\t\t\t\tnationalSignificantNumber: number\n\t\t\t})\n\t\t\treturn true\n\t\t}\n\t}\n\n\treset(numberingPlan) {\n\t\tif (numberingPlan) {\n\t\t\tthis.hasSelectedNumberingPlan = true\n\t\t\tconst nationalPrefixForParsing = numberingPlan._nationalPrefixForParsing()\n\t\t\tthis.couldPossiblyExtractAnotherNationalSignificantNumber = nationalPrefixForParsing \u0026\u0026 COMPLEX_NATIONAL_PREFIX.test(nationalPrefixForParsing)\n\t\t} else {\n\t\t\tthis.hasSelectedNumberingPlan = undefined\n\t\t\tthis.couldPossiblyExtractAnotherNationalSignificantNumber = undefined\n\t\t}\n\t}\n\n\t/**\n\t * Extracts a national (significant) number from user input.\n\t * Google's library is different in that it only applies `national_prefix_for_parsing`\n\t * and doesn't apply `national_prefix_transform_rule` after that.\n\t * https://github.com/google/libphonenumber/blob/a3d70b0487875475e6ad659af404943211d26456/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L539\n\t * @return {boolean} [extracted]\n\t */\n\textractNationalSignificantNumber(nationalDigits, setState) {\n\t\tif (!this.hasSelectedNumberingPlan) {\n\t\t\treturn\n\t\t}\n\t\tconst {\n\t\t\tnationalPrefix,\n\t\t\tnationalNumber,\n\t\t\tcarrierCode\n\t\t} = extractNationalNumberFromPossiblyIncompleteNumber(\n\t\t\tnationalDigits,\n\t\t\tthis.metadata\n\t\t)\n\t\tif (nationalNumber === nationalDigits) {\n\t\t\treturn\n\t\t}\n\t\tthis.onExtractedNationalNumber(\n\t\t\tnationalPrefix,\n\t\t\tcarrierCode,\n\t\t\tnationalNumber,\n\t\t\tnationalDigits,\n\t\t\tsetState\n\t\t)\n\t\treturn true\n\t}\n\n\t/**\n\t * In Google's code this function is called \"attempt to extract longer NDD\".\n\t * \"Some national prefixes are a substring of others\", they say.\n\t * @return {boolean} [result] — Returns `true` if extracting a national prefix produced different results from what they were.\n\t */\n\textractAnotherNationalSignificantNumber(nationalDigits, prevNationalSignificantNumber, setState) {\n\t\tif (!this.hasExtractedNationalSignificantNumber) {\n\t\t\treturn this.extractNationalSignificantNumber(nationalDigits, setState)\n\t\t}\n\t\tif (!this.couldPossiblyExtractAnotherNationalSignificantNumber) {\n\t\t\treturn\n\t\t}\n\t\tconst {\n\t\t\tnationalPrefix,\n\t\t\tnationalNumber,\n\t\t\tcarrierCode\n\t\t} = extractNationalNumberFromPossiblyIncompleteNumber(\n\t\t\tnationalDigits,\n\t\t\tthis.metadata\n\t\t)\n\t\t// If a national prefix has been extracted previously,\n\t\t// then it's always extracted as additional digits are added.\n\t\t// That's assuming `extractNationalNumberFromPossiblyIncompleteNumber()`\n\t\t// doesn't do anything different from what it currently does.\n\t\t// So, just in case, here's this check, though it doesn't occur.\n\t\t/* istanbul ignore if */\n\t\tif (nationalNumber === prevNationalSignificantNumber) {\n\t\t\treturn\n\t\t}\n\t\tthis.onExtractedNationalNumber(\n\t\t\tnationalPrefix,\n\t\t\tcarrierCode,\n\t\t\tnationalNumber,\n\t\t\tnationalDigits,\n\t\t\tsetState\n\t\t)\n\t\treturn true\n\t}\n\n\tonExtractedNationalNumber(\n\t\tnationalPrefix,\n\t\tcarrierCode,\n\t\tnationalSignificantNumber,\n\t\tnationalDigits,\n\t\tsetState\n\t) {\n\t\t// Tells if the parsed national (significant) number is present as-is in the input string.\n\t\t// For example, when inputting \"0343515551212999\" Argentinian mobile number,\n\t\t// the parsed national (significant) number is \"93435551212999\".\n\t\t// There, one can see how it stripped \"0\" national prefix and prepended a \"9\",\n\t\t// because that's how it is instructed to do in Argentina's metadata.\n\t\t// So in the described example, the parsed national (significant) number is not present\n\t\t// as-is in the input string. Instead, it's \"modified\" in the input string.\n\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\n\t\tlet nationalSignificantNumberIsModified = false\n\n\t\t// In some countries, a phone number could have a prefix that is not a \"national prefix\"\n\t\t// but rather some other type of \"utility\" prefix.\n\t\t// For example, when calling within Australia, one could prepend `1831` prefix to hide\n\t\t// caller's phone number.\n\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\n\t\tlet prefixBeforeNationalSignificantNumberThatIsNotNationalPrefix\n\n\t\t// `nationalSignificantNumber` could be empty. In that case, `.lastIndexOf()` still works correctly.\n\t\tconst nationalSignificantNumberIndex = nationalDigits.lastIndexOf(nationalSignificantNumber)\n\n\t\t// If the parsed national (significant) number is the last substring of the `nationalDigits`,\n\t\t// then it means that it's present as-is in the input string.\n\t\t// In any other case, the parsed national (significant) number is \"modified\" in the input string.\n\t\tif (\n\t\t\tnationalSignificantNumberIndex \u003c 0 ||\n\t\t\tnationalSignificantNumberIndex !== nationalDigits.length - nationalSignificantNumber.length\n\t\t) {\n\t\t\tnationalSignificantNumberIsModified = true\n\t\t} else {\n\t\t\tconst prefixBeforeNationalNumber = nationalDigits.slice(0, nationalSignificantNumberIndex)\n\t\t\t// When national (significant) number is equal to the `nationalDigits`,\n\t\t\t// this `onExtractedNationalNumber()` function simply doesn't get called.\n\t\t\t// This means that at this point, `prefixBeforeNationalNumber` is always non-empty.\n\t\t\t// Still, added this `if` check just to prevent potential silly bugs.\n\t\t\t// The `!prefixBeforeNationalNumber` case is not really testable\n\t\t\t// so this line is exluded from the code coverage.\n\t\t\t/* istanbul ignore if */\n\t\t\tif (prefixBeforeNationalNumber) {\n\t\t\t\tif (prefixBeforeNationalNumber !== nationalPrefix) {\n\t\t\t\t\tprefixBeforeNationalSignificantNumberThatIsNotNationalPrefix = prefixBeforeNationalNumber\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tsetState({\n\t\t\tnationalPrefix,\n\t\t\tcarrierCode,\n\t\t\tnationalSignificantNumber,\n\t\t\tnationalSignificantNumberIsModified,\n\t\t\tprefixBeforeNationalSignificantNumberThatIsNotNationalPrefix\n\t\t})\n\t\t// `onExtractedNationalNumber()` is only called when\n\t\t// the national (significant) number actually did change.\n\t\tthis.hasExtractedNationalSignificantNumber = true\n\t\tthis.onNationalSignificantNumberChange()\n\t}\n\n\treExtractNationalSignificantNumber(state) {\n\t\t// Attempt to extract a national prefix.\n\t\t//\n\t\t// Some people incorrectly input national prefix\n\t\t// in an international phone number.\n\t\t// For example, some people write British phone numbers as `+44(0)...`.\n\t\t//\n\t\t// Also, in some rare cases, it is valid for a national prefix\n\t\t// to be a part of an international phone number.\n\t\t// For example, mobile phone numbers in Mexico are supposed to be\n\t\t// dialled internationally using a `1` national prefix,\n\t\t// so the national prefix will be part of an international number.\n\t\t//\n\t\t// Quote from:\n\t\t// https://www.mexperience.com/dialing-cell-phones-in-mexico/\n\t\t//\n\t\t// \"Dialing a Mexican cell phone from abroad\n\t\t// When you are calling a cell phone number in Mexico from outside Mexico,\n\t\t// it’s necessary to dial an additional “1” after Mexico’s country code\n\t\t// (which is “52”) and before the area code.\n\t\t// You also ignore the 045, and simply dial the area code and the\n\t\t// cell phone’s number.\n\t\t//\n\t\t// If you don’t add the “1”, you’ll receive a recorded announcement\n\t\t// asking you to redial using it.\n\t\t//\n\t\t// For example, if you are calling from the USA to a cell phone\n\t\t// in Mexico City, you would dial +52 – 1 – 55 – 1234 5678.\n\t\t// (Note that this is different to calling a land line in Mexico City\n\t\t// from abroad, where the number dialed would be +52 – 55 – 1234 5678)\".\n\t\t//\n\t\t// Google's demo output:\n\t\t// https://libphonenumber.appspot.com/phonenumberparser?number=%2b5215512345678\u0026country=MX\n\t\t//\n\t\tif (this.extractAnotherNationalSignificantNumber(\n\t\t\tstate.getNationalDigits(),\n\t\t\tstate.nationalSignificantNumber,\n\t\t\t(stateUpdate) =\u003e state.update(stateUpdate)\n\t\t)) {\n\t\t\treturn true\n\t\t}\n\t\t// If no format matches the phone number, then it could be\n\t\t// \"a really long IDD\" (quote from a comment in Google's library).\n\t\t// An IDD prefix is first extracted when the user has entered at least 3 digits,\n\t\t// and then here — every time when there's a new digit and the number\n\t\t// couldn't be formatted.\n\t\t// For example, in Australia the default IDD prefix is `0011`,\n\t\t// and it could even be as long as `14880011`.\n\t\t//\n\t\t// Could also check `!hasReceivedThreeLeadingDigits` here\n\t\t// to filter out the case when this check duplicates the one\n\t\t// already performed when there're 3 leading digits,\n\t\t// but it's not a big deal, and in most cases there\n\t\t// will be a suitable `format` when there're 3 leading digits.\n\t\t//\n\t\tif (this.extractIddPrefix(state)) {\n\t\t\tthis.extractCallingCodeAndNationalSignificantNumber(state)\n\t\t\treturn true\n\t\t}\n\t\t// Google's AsYouType formatter supports sort of an \"autocorrection\" feature\n\t\t// when it \"autocorrects\" numbers that have been input for a country\n\t\t// with that country's calling code.\n\t\t// Such \"autocorrection\" feature looks weird, but different people have been requesting it:\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/376\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/375\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/316\n\t\tif (this.fixMissingPlus(state)) {\n\t\t\tthis.extractCallingCodeAndNationalSignificantNumber(state)\n\t\t\treturn true\n\t\t}\n\t}\n\n\textractIddPrefix(state) {\n\t\t// An IDD prefix can't be present in a number written with a `+`.\n\t\t// Also, don't re-extract an IDD prefix if has already been extracted.\n\t\tconst {\n\t\t\tinternational,\n\t\t\tIDDPrefix,\n\t\t\tdigits,\n\t\t\tnationalSignificantNumber\n\t\t} = state\n\t\tif (international || IDDPrefix) {\n\t\t\treturn\n\t\t}\n\t\t// Some users input their phone number in \"out-of-country\"\n\t\t// dialing format instead of using the leading `+`.\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/185\n\t\t// Detect such numbers.\n\t\tconst numberWithoutIDD = stripIddPrefix(\n\t\t\tdigits,\n\t\t\tthis.defaultCountry,\n\t\t\tthis.defaultCallingCode,\n\t\t\tthis.metadata.metadata\n\t\t)\n\t\tif (numberWithoutIDD !== undefined \u0026\u0026 numberWithoutIDD !== digits) {\n\t\t\t// If an IDD prefix was stripped then convert the IDD-prefixed number\n\t\t\t// to international number for subsequent parsing.\n\t\t\tstate.update({\n\t\t\t\tIDDPrefix: digits.slice(0, digits.length - numberWithoutIDD.length)\n\t\t\t})\n\t\t\tthis.startInternationalNumber(state, {\n\t\t\t\tcountry: undefined,\n\t\t\t\tcallingCode: undefined\n\t\t\t})\n\t\t\treturn true\n\t\t}\n\t}\n\n\tfixMissingPlus(state) {\n\t\tif (!state.international) {\n\t\t\tconst {\n\t\t\t\tcountryCallingCode: newCallingCode\n\t\t\t} = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(\n\t\t\t\tstate.digits,\n\t\t\t\tstate.country,\n\t\t\t\tthis.defaultCountry,\n\t\t\t\tthis.defaultCallingCode,\n\t\t\t\tthis.metadata.metadata\n\t\t\t)\n\t\t\tif (newCallingCode) {\n\t\t\t\tstate.update({\n\t\t\t\t\tmissingPlus: true\n\t\t\t\t})\n\t\t\t\tthis.startInternationalNumber(state, {\n\t\t\t\t\tcountry: state.country,\n\t\t\t\t\tcallingCode: newCallingCode\n\t\t\t\t})\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t}\n\n\tstartInternationalNumber(state, { country, callingCode }) {\n\t\tstate.startInternationalNumber(country, callingCode)\n\t\t// If a national (significant) number has been extracted before, reset it.\n\t\tif (state.nationalSignificantNumber) {\n\t\t\tstate.resetNationalSignificantNumber()\n\t\t\tthis.onNationalSignificantNumberChange()\n\t\t\tthis.hasExtractedNationalSignificantNumber = undefined\n\t\t}\n\t}\n\n\textractCallingCodeAndNationalSignificantNumber(state) {\n\t\tif (this.extractCountryCallingCode(state)) {\n\t\t\t// `this.extractCallingCode()` is currently called when the number\n\t\t\t// couldn't be formatted during the standard procedure.\n\t\t\t// Normally, the national prefix would be re-extracted\n\t\t\t// for an international number if such number couldn't be formatted,\n\t\t\t// but since it's already not able to be formatted,\n\t\t\t// there won't be yet another retry, so also extract national prefix here.\n\t\t\tthis.extractNationalSignificantNumber(\n\t\t\t\tstate.getNationalDigits(),\n\t\t\t\t(stateUpdate) =\u003e state.update(stateUpdate)\n\t\t\t)\n\t\t}\n\t}\n}\n\n/**\n * Extracts formatted phone number from text (if there's any).\n * @param  {string} text\n * @return {string} [formattedPhoneNumber]\n */\nfunction extractFormattedPhoneNumber(text) {\n\t// Attempt to extract a possible number from the string passed in.\n\tconst startsAt = text.search(VALID_FORMATTED_PHONE_NUMBER_PART)\n\tif (startsAt \u003c 0) {\n\t\treturn\n\t}\n\t// Trim everything to the left of the phone number.\n\ttext = text.slice(startsAt)\n\t// Trim the `+`.\n\tlet hasPlus\n\tif (text[0] === '+') {\n\t\thasPlus = true\n\t\ttext = text.slice('+'.length)\n\t}\n\t// Trim everything to the right of the phone number.\n\ttext = text.replace(AFTER_PHONE_NUMBER_DIGITS_END_PATTERN, '')\n\t// Re-add the previously trimmed `+`.\n\tif (hasPlus) {\n\t\ttext = '+' + text\n\t}\n\treturn text\n}\n\n/**\n * Extracts formatted phone number digits (and a `+`) from text (if there're any).\n * @param  {string} text\n * @return {any[]}\n */\nfunction _extractFormattedDigitsAndPlus(text) {\n\t// Extract a formatted phone number part from text.\n\tconst extractedNumber = extractFormattedPhoneNumber(text) || ''\n\t// Trim a `+`.\n\tif (extractedNumber[0] === '+') {\n\t\treturn [extractedNumber.slice('+'.length), true]\n\t}\n\treturn [extractedNumber]\n}\n\n/**\n * Extracts formatted phone number digits (and a `+`) from text (if there're any).\n * @param  {string} text\n * @return {any[]}\n */\nexport function extractFormattedDigitsAndPlus(text) {\n\tlet [formattedDigits, hasPlus] = _extractFormattedDigitsAndPlus(text)\n\t// If the extracted phone number part\n\t// can possibly be a part of some valid phone number\n\t// then parse phone number characters from a formatted phone number.\n\tif (!VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN.test(formattedDigits)) {\n\t\tformattedDigits = ''\n\t}\n\treturn [formattedDigits, hasPlus]\n}","import Metadata from './metadata.js'\nimport PhoneNumber from './PhoneNumber.js'\nimport checkNumberLength from './helpers/checkNumberLength.js'\nimport AsYouTypeState from './AsYouTypeState.js'\nimport AsYouTypeFormatter, { DIGIT_PLACEHOLDER } from './AsYouTypeFormatter.js'\nimport AsYouTypeParser, { extractFormattedDigitsAndPlus } from './AsYouTypeParser.js'\nimport getCountryByCallingCode from './helpers/getCountryByCallingCode.js'\nimport getCountryByNationalNumber from './helpers/getCountryByNationalNumber.js'\nimport isObject from './helpers/isObject.js'\n\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\n\nexport default class AsYouType {\n\t/**\n\t * @param {(string|object)?} [optionsOrDefaultCountry] - The default country used for parsing non-international phone numbers. Can also be an `options` object.\n\t * @param {Object} metadata\n\t */\n\tconstructor(optionsOrDefaultCountry, metadata) {\n\t\t// Metadata instance is created once and stays constant.\n\t\t// This is required because other utility classes such as `AsYouTypeFormatter`\n\t\t// will use this metadata instance \"reference\" and will assume that it stays constant.\n\t\tthis.metadata = new Metadata(metadata)\n\t\tconst [defaultCountry, defaultCallingCode] = this.getCountryAndCallingCode(optionsOrDefaultCountry)\n\t\t// `this.defaultCountry` and `this.defaultCallingCode` aren't required to be in sync.\n\t\t// For example, `this.defaultCountry` could be `\"AR\"` and `this.defaultCallingCode` could be `undefined`.\n\t\t// So `this.defaultCountry` and `this.defaultCallingCode` are totally independent.\n\t\tthis.defaultCountry = defaultCountry\n\t\tthis.defaultCallingCode = defaultCallingCode\n\t\tthis.reset()\n\t}\n\n\tgetCountryAndCallingCode(optionsOrDefaultCountry) {\n\t\t// Set `defaultCountry` and `defaultCallingCode` options.\n\t\tlet defaultCountry\n\t\tlet defaultCallingCode\n\t\t// Turns out `null` also has type \"object\". Weird.\n\t\tif (optionsOrDefaultCountry) {\n\t\t\tif (isObject(optionsOrDefaultCountry)) {\n\t\t\t\tdefaultCountry = optionsOrDefaultCountry.defaultCountry\n\t\t\t\tdefaultCallingCode = optionsOrDefaultCountry.defaultCallingCode\n\t\t\t} else {\n\t\t\t\tdefaultCountry = optionsOrDefaultCountry\n\t\t\t}\n\t\t}\n\t\tif (defaultCountry \u0026\u0026 !this.metadata.hasCountry(defaultCountry)) {\n\t\t\tdefaultCountry = undefined\n\t\t}\n\t\tif (defaultCallingCode) {\n\t\t\t/* istanbul ignore if */\n\t\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n\t\t\t\tif (this.metadata.isNonGeographicCallingCode(defaultCallingCode)) {\n\t\t\t\t\tdefaultCountry = '001'\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn [defaultCountry, defaultCallingCode]\n\t}\n\n\t/**\n\t * Inputs \"next\" phone number characters.\n\t * @param  {string} text\n\t * @return {string} Formatted phone number characters that have been input so far.\n\t */\n\tinput(text) {\n\t\tconst {\n\t\t\tdigits,\n\t\t\tjustLeadingPlus\n\t\t} = this.parser.input(text, this.state)\n\t\tif (justLeadingPlus) {\n\t\t\tthis.formattedOutput = '+'\n\t\t} else if (digits) {\n\t\t\tthis.determineTheCountryIfNeeded()\n\t\t\t// Match the available formats by the currently available leading digits.\n\t\t\tif (this.state.nationalSignificantNumber) {\n\t\t\t\tthis.formatter.narrowDownMatchingFormats(this.state)\n\t\t\t}\n\t\t\tlet formattedNationalNumber\n\t\t\tif (this.metadata.hasSelectedNumberingPlan()) {\n\t\t\t\tformattedNationalNumber = this.formatter.format(digits, this.state)\n\t\t\t}\n\t\t\tif (formattedNationalNumber === undefined) {\n\t\t\t\t// See if another national (significant) number could be re-extracted.\n\t\t\t\tif (this.parser.reExtractNationalSignificantNumber(this.state)) {\n\t\t\t\t\tthis.determineTheCountryIfNeeded()\n\t\t\t\t\t// If it could, then re-try formatting the new national (significant) number.\n\t\t\t\t\tconst nationalDigits = this.state.getNationalDigits()\n\t\t\t\t\tif (nationalDigits) {\n\t\t\t\t\t\tformattedNationalNumber = this.formatter.format(nationalDigits, this.state)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.formattedOutput = formattedNationalNumber\n\t\t\t\t? this.getFullNumber(formattedNationalNumber)\n\t\t\t\t: this.getNonFormattedNumber()\n\t\t}\n\t\treturn this.formattedOutput\n\t}\n\n\treset() {\n\t\tthis.state = new AsYouTypeState({\n\t\t\tonCountryChange: (country) =\u003e {\n\t\t\t\t// Before version `1.6.0`, the official `AsYouType` formatter API\n\t\t\t\t// included a `.country` property on an `AsYouType` instance.\n\t\t\t\t// Since that property (along with the others) have been moved to\n\t\t\t\t// `this.state`, `this.country` property is emulated for compatibility\n\t\t\t\t// with the old versions.\n\t\t\t\tthis.country = country\n\t\t\t},\n\t\t\tonCallingCodeChange: (callingCode, country) =\u003e {\n\t\t\t\tthis.metadata.selectNumberingPlan(country || callingCode)\n\t\t\t\tthis.formatter.reset(this.metadata.numberingPlan, this.state)\n\t\t\t\tthis.parser.reset(this.metadata.numberingPlan)\n\t\t\t}\n\t\t})\n\t\tthis.formatter = new AsYouTypeFormatter({\n\t\t\tstate: this.state,\n\t\t\tmetadata: this.metadata\n\t\t})\n\t\tthis.parser = new AsYouTypeParser({\n\t\t\tdefaultCountry: this.defaultCountry,\n\t\t\tdefaultCallingCode: this.defaultCallingCode,\n\t\t\tmetadata: this.metadata,\n\t\t\tstate: this.state,\n\t\t\tonNationalSignificantNumberChange: () =\u003e {\n\t\t\t\tthis.determineTheCountryIfNeeded()\n\t\t\t\tthis.formatter.reset(this.metadata.numberingPlan, this.state)\n\t\t\t}\n\t\t})\n\t\tthis.state.reset({\n\t\t\tcountry: this.defaultCountry,\n\t\t\tcallingCode: this.defaultCallingCode\n\t\t})\n\t\tthis.formattedOutput = ''\n\t\treturn this\n\t}\n\n\t/**\n\t * Returns `true` if the phone number is being input in international format.\n\t * In other words, returns `true` if and only if the parsed phone number starts with a `\"+\"`.\n\t * @return {boolean}\n\t */\n\tisInternational() {\n\t\treturn this.state.international\n\t}\n\n\t/**\n\t * Returns the \"calling code\" part of the phone number when it's being input\n\t * in an international format.\n\t * If no valid calling code has been entered so far, returns `undefined`.\n\t * @return {string} [callingCode]\n\t */\n\tgetCallingCode() {\n\t\t // If the number is being input in national format and some \"default calling code\"\n\t\t // has been passed to `AsYouType` constructor, then `this.state.callingCode`\n\t\t // is equal to that \"default calling code\".\n\t\t //\n\t\t // If the number is being input in national format and no \"default calling code\"\n\t\t // has been passed to `AsYouType` constructor, then returns `undefined`,\n\t\t // even if a \"default country\" has been passed to `AsYouType` constructor.\n\t\t //\n\t\tif (this.isInternational()) {\n\t\t\treturn this.state.callingCode\n\t\t}\n\t}\n\n\t// A legacy alias.\n\tgetCountryCallingCode() {\n\t\treturn this.getCallingCode()\n\t}\n\n\t/**\n\t * Returns a two-letter country code of the phone number.\n\t * Returns `undefined` for \"non-geographic\" phone numbering plans.\n\t * Returns `undefined` if no phone number has been input yet.\n\t * @return {string} [country]\n\t */\n\tgetCountry() {\n\t\tconst { digits } = this.state\n\t\t// Return `undefined` if no digits have been input yet.\n\t\tif (digits) {\n\t\t\treturn this._getCountry()\n\t\t}\n\t}\n\n\t/**\n\t * Returns a two-letter country code of the phone number.\n\t * Returns `undefined` for \"non-geographic\" phone numbering plans.\n\t * @return {string} [country]\n\t */\n\t_getCountry() {\n\t\tconst { country } = this.state\n\t\t/* istanbul ignore if */\n\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n\t\t\t// `AsYouType.getCountry()` returns `undefined`\n\t\t\t// for \"non-geographic\" phone numbering plans.\n\t\t\tif (country === '001') {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t\treturn country\n\t}\n\n\tdetermineTheCountryIfNeeded() {\n\t\t// Suppose a user enters a phone number in international format,\n\t\t// and there're several countries corresponding to that country calling code,\n\t\t// and a country has been derived from the number, and then\n\t\t// a user enters one more digit and the number is no longer\n\t\t// valid for the derived country, so the country should be re-derived\n\t\t// on every new digit in those cases.\n\t\t//\n\t\t// If the phone number is being input in national format,\n\t\t// then it could be a case when `defaultCountry` wasn't specified\n\t\t// when creating `AsYouType` instance, and just `defaultCallingCode` was specified,\n\t\t// and that \"calling code\" could correspond to a \"non-geographic entity\",\n\t\t// or there could be several countries corresponding to that country calling code.\n\t\t// In those cases, `this.country` is `undefined` and should be derived\n\t\t// from the number. Again, if country calling code is ambiguous, then\n\t\t// `this.country` should be re-derived with each new digit.\n\t\t//\n\t\tif (!this.state.country || this.isCountryCallingCodeAmbiguous()) {\n\t\t\tthis.determineTheCountry()\n\t\t}\n\t}\n\n\t// Prepends `+CountryCode ` in case of an international phone number\n\tgetFullNumber(formattedNationalNumber) {\n\t\tif (this.isInternational()) {\n\t\t\tconst prefix = (text) =\u003e this.formatter.getInternationalPrefixBeforeCountryCallingCode(this.state, {\n\t\t\t\tspacing: text ? true : false\n\t\t\t}) + text\n\t\t\tconst { callingCode } = this.state\n\t\t\tif (!callingCode) {\n\t\t\t\treturn prefix(`${this.state.getDigitsWithoutInternationalPrefix()}`)\n\t\t\t}\n\t\t\tif (!formattedNationalNumber) {\n\t\t\t\treturn prefix(callingCode)\n\t\t\t}\n\t\t\treturn prefix(`${callingCode} ${formattedNationalNumber}`)\n\t\t}\n\t\treturn formattedNationalNumber\n\t}\n\n\tgetNonFormattedNationalNumberWithPrefix() {\n\t\tconst {\n\t\t\tnationalSignificantNumber,\n\t\t\tprefixBeforeNationalSignificantNumberThatIsNotNationalPrefix,\n\t\t\tnationalPrefix\n\t\t} = this.state\n\t\tlet number = nationalSignificantNumber\n\t\tconst prefix = prefixBeforeNationalSignificantNumberThatIsNotNationalPrefix || nationalPrefix\n\t\tif (prefix) {\n\t\t\tnumber = prefix + number\n\t\t}\n\t\treturn number\n\t}\n\n\tgetNonFormattedNumber() {\n\t\tconst { nationalSignificantNumberIsModified } = this.state\n\t\treturn this.getFullNumber(\n\t\t\tnationalSignificantNumberIsModified\n\t\t\t\t? this.state.getNationalDigits()\n\t\t\t\t: this.getNonFormattedNationalNumberWithPrefix()\n\t\t)\n\t}\n\n\tgetNonFormattedTemplate() {\n\t\tconst number = this.getNonFormattedNumber()\n\t\tif (number) {\n\t\t\treturn number.replace(/[\\+\\d]/g, DIGIT_PLACEHOLDER)\n\t\t}\n\t}\n\n\tisCountryCallingCodeAmbiguous() {\n\t\tconst { callingCode } = this.state\n\t\tconst countryCodes = this.metadata.getCountryCodesForCallingCode(callingCode)\n\t\treturn countryCodes \u0026\u0026 countryCodes.length \u003e 1\n\t}\n\n\t// Determines the exact country of the phone number\n\t// entered so far based on the country phone code\n\t// and the national phone number.\n\tdetermineTheCountry() {\n\t\t// Get a more precise country code for this national number.\n\t\t// It is possible that the precise country couldn't be determined\n\t\t// in cases when there're multiple countries sharing the same calling code.\n\t\t// In that case, `country` will be `undefined`.\n\t\tconst country = getCountryByCallingCode(\n\t\t\tthis.isInternational() ? this.state.callingCode : this.defaultCallingCode,\n\t\t\t{\n\t\t\t\tnationalNumber: this.state.nationalSignificantNumber,\n\t\t\t\tmetadata: this.metadata\n\t\t\t}\n\t\t)\n\t\t// If the derived country is indeed more precise,\n\t\t// or if no country could be derived for the updated phone number.\n\t\tif (country !== this.state.country) {\n\t\t\t// Set (or reset) the more precise country.\n\t\t\tthis.state.setCountry(country)\n\t\t\t// If a more precise country could be derived.\n\t\t\tif (country) {\n\t\t\t\t// Select a more precise telephone numbering plan.\n\t\t\t\t// For example, consider that `AsYouType` instance was created with `defaultCountry: \"US\"` argument.\n\t\t\t\t// In that case, the metadata instance will be using \"US\" metadata.\n\t\t\t\t// But then the user could input a Canadian phone number, in which case\n\t\t\t\t// the metadata instance should be switched to Canadian telephone numbering plan.\n\t\t\t\t// It is required to do that because later `canFormatCompleteNumber()` function will be called,\n\t\t\t\t// and that function relies on the precise country being pre-selected in the metadata instance.\n\t\t\t\t// Or, for example, `checkNumberLength()` function also relies on same thing.\n\t\t\t\tthis.metadata.selectNumberingPlan(country)\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Returns a E.164 phone number value for the user's input.\n\t *\n\t * For example, for country `\"US\"` and input `\"(222) 333-4444\"`\n\t * it will return `\"+12223334444\"`.\n\t *\n\t * For international phone number input, it will also auto-correct\n\t * some minor errors such as using a national prefix when writing\n\t * an international phone number. For example, if the user inputs\n\t * `\"+44 0 7400 000000\"` then it will return an auto-corrected\n\t * `\"+447400000000\"` phone number value.\n\t *\n\t * Will return `undefined` if no digits have been input,\n\t * or when inputting a phone number in national format and no\n\t * default country or default \"country calling code\" have been set.\n\t *\n\t * @return {string} [value]\n\t */\n\tgetNumberValue() {\n\t\tconst {\n\t\t\tdigits,\n\t\t\tcallingCode,\n\t\t\tcountry,\n\t\t\tnationalSignificantNumber\n\t\t} = this.state\n\n\t \t// Will return `undefined` if no digits have been input.\n\t\tif (!digits) {\n\t\t\treturn\n\t\t}\n\n\t\tif (this.isInternational()) {\n\t\t\tif (callingCode) {\n\t\t\t\treturn '+' + callingCode + nationalSignificantNumber\n\t\t\t} else {\n\t\t\t\treturn '+' + digits\n\t\t\t}\n\t\t} else {\n\t\t\tif (country || callingCode) {\n\t\t\t\tconst callingCode_ = country ? this.metadata.countryCallingCode() : callingCode\n\t\t\t\treturn '+' + callingCode_ + nationalSignificantNumber\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Returns an instance of `PhoneNumber` class.\n\t * Will return `undefined` if no national (significant) number\n\t * digits have been entered so far, or if no `defaultCountry` has been\n\t * set and the user enters a phone number not in international format.\n\t */\n\tgetNumber() {\n\t\tconst {\n\t\t\tnationalSignificantNumber,\n\t\t\tcarrierCode,\n\t\t\tcallingCode\n\t\t} = this.state\n\n\t\tif (!nationalSignificantNumber) {\n\t\t\treturn\n\t\t}\n\n\t\t// `this._getCountry()` is basically same as `this.state.country`\n\t\t// with the only change that it returns `undefined` in case of a\n\t\t// \"non-geographic\" numbering plan instead of `\"001\"` \"internal use\" value.\n\t\tlet country = this._getCountry()\n\n\t\t// Sidenote:\n\t\t// `state.callingCode` and `state.country` are somewhat independent from one another\n\t\t// and there could be situations when one is defined but the other is not.\n\t\t// See the comment in `AsYouTypeState.js` for more info on when that is possible.\n\n\t\tif (!country \u0026\u0026 !callingCode) {\n\t\t\treturn\n\t\t}\n\n\t\t// By default, if `defaultCountry` parameter was passed when\n\t\t// creating `AsYouType` instance, `state.country` is gonna be\n\t\t// that `defaultCountry`, which doesn't entirely conform with\n\t\t// `parsePhoneNumber()`'s behavior where it attempts to determine\n\t\t// the country more precisely in cases when multiple countries\n\t\t// could correspond to the same `countryCallingCode`.\n\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/103#note_1417192969\n\t\t//\n\t\t// Because `AsYouType.getNumber()` method is supposed to be a 1:1\n\t\t// equivalent for `parsePhoneNumber(AsYouType.getNumberValue())`,\n\t\t// it means that it should also behave accordingly in such cases of `country` ambiguity.\n\t\t// That's how users of this library would expect it to behave anyway.\n\t\t//\n\t\t// So here it checks if `state.country` is same as the `defaultCountry`,\n\t\t// and if it is, it attempts to get rid of any potential ambiguity.\n\t\t//\n\t\tif (country) {\n\t\t\tif (country === this.defaultCountry) {\n\t\t\t\t// // Create a `Metadata` instance just to get the calling code of the `country`.\n\t\t\t\t// const metadata = new Metadata(this.metadata.metadata)\n\t\t\t\t// // `state.callingCode` and `state.country` are somewhat independent from one another\n\t\t\t\t// // and there could be situations when one is defined but the other is not.\n\t\t\t\t// // See the comment in `AsYouTypeState.js` for more info on when that is possible.\n\t\t\t\t// // Here, it only passes `state.country` because there's no need to pass `state.callingCode`\n\t\t\t\t// // because `state.country` is known to be defined.\n\t\t\t\t// metadata.selectNumberingPlan(country)\n\t\t\t\t// const countryCallingCode = metadata.numberingPlan.callingCode()\n\n\t\t\t\t// Instead of getting `countryCallingCode` value above,\n\t\t\t\t// it could simply read it from the existing metadata instance.\n\t\t\t\tconst countryCallingCode = this.metadata.numberingPlan.callingCode()\n\n\t\t\t\t// Attempt to rule out any potential country code ambiguity, if present.\n\t\t\t\tconst exactCountry = getExactCountryForMultiCountryCallingCode(\n\t\t\t\t\tcountryCallingCode,\n\t\t\t\t\tnationalSignificantNumber,\n\t\t\t\t\tthis.metadata\n\t\t\t\t)\n\t\t\t\tif (exactCountry) {\n\t\t\t\t\tcountry = exactCountry\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst phoneNumber = new PhoneNumber(\n\t\t\tcountry || callingCode,\n\t\t\tnationalSignificantNumber,\n\t\t\tthis.metadata.metadata\n\t\t)\n\t\tif (carrierCode) {\n\t\t\tphoneNumber.carrierCode = carrierCode\n\t\t}\n\t\t// Phone number extensions are not supported by \"As You Type\" formatter.\n\t\treturn phoneNumber\n\t}\n\n\t/**\n\t * Returns `true` if the phone number is \"possible\".\n\t * Is just a shortcut for `PhoneNumber.isPossible()`.\n\t * @return {boolean}\n\t */\n\tisPossible() {\n\t\tconst phoneNumber = this.getNumber()\n\t\tif (!phoneNumber) {\n\t\t\treturn false\n\t\t}\n\t\treturn phoneNumber.isPossible()\n\t}\n\n\t/**\n\t * Returns `true` if the phone number is \"valid\".\n\t * Is just a shortcut for `PhoneNumber.isValid()`.\n\t * @return {boolean}\n\t */\n\tisValid() {\n\t\tconst phoneNumber = this.getNumber()\n\t\tif (!phoneNumber) {\n\t\t\treturn false\n\t\t}\n\t\treturn phoneNumber.isValid()\n\t}\n\n\t/**\n\t * Checks if the phone number length is valid.\n\t * If it is, nothing is returned.\n\t * Otherwise, a rejection reason is returned.\n\t * @return {string?}\n\t */\n\tvalidateLength() {\n\t\tconst {\n\t\t\tdigits,\n\t\t\tnationalSignificantNumber\n\t\t} = this.state\n\n\t\tif (!digits) {\n\t\t\treturn 'NOT_A_NUMBER'\n\t\t}\n\n\t\tif (!this.metadata.numberingPlan) {\n\t\t\treturn 'INVALID_COUNTRY'\n\t\t}\n\n\t\tif (!nationalSignificantNumber) {\n\t\t\t return 'TOO_SHORT'\n\t\t}\n\n\t\t// `state.callingCode` and `state.country` are somewhat independent from one another\n\t\t// and there could be situations when one is defined but the other is not.\n\t\t// See the comment in `AsYouTypeState.js` for more info on when that is possible.\n\t\t// Here, it uses both: if `country` is defined then it will use that,\n\t\t// otherwise it will use `callingCode`.\n\t\tconst result = checkNumberLength(nationalSignificantNumber, undefined, this.metadata)\n\t\tif (result !== 'IS_POSSIBLE') {\n\t\t\treturn result\n\t\t}\n\t}\n\n\t/**\n\t * @deprecated\n\t * This method is used in `react-phone-number-input/source/input-control.js`\n\t * in versions before `3.0.16`.\n\t */\n\tgetNationalNumber() {\n\t\treturn this.state.nationalSignificantNumber\n\t}\n\n\t/**\n\t * Returns the phone number characters entered by the user.\n\t * @return {string}\n\t */\n\tgetChars() {\n\t\treturn (this.state.international ? '+' : '') + this.state.digits\n\t}\n\n\t/**\n\t * Returns the template for the formatted phone number.\n\t * @return {string}\n\t */\n\tgetTemplate() {\n\t\treturn this.formatter.getTemplate(this.state) || this.getNonFormattedTemplate() || ''\n\t}\n}\n\n// In situations when multiple countries use the same calling code,\n// this function tells what exact country does a given national (significant) number belong to.\nfunction getExactCountryForMultiCountryCallingCode(callingCode, nationalSignificantNumber, metadata) {\n\tconst ambiguousCountries = metadata.getCountryCodesForCallingCode(callingCode)\n\tif (ambiguousCountries.length \u003e 1) {\n\t\treturn getCountryByNationalNumber(nationalSignificantNumber, ambiguousCountries, metadata.metadata)\n\t}\n}","import Metadata from './metadata.js'\n\nexport default function getCountries(metadata) {\n\treturn new Metadata(metadata).getCountries()\n}","import PhoneNumber from './PhoneNumber.js'\n\nexport default function getExampleNumber(country, examples, metadata) {\n\tif (examples[country]) {\n\t\treturn new PhoneNumber(country, examples[country], metadata)\n\t}\n}","import AsYouType from './AsYouType.js'\n\n/**\n * Formats a (possibly incomplete) phone number.\n * The phone number can be either in E.164 format\n * or in a form of national number digits.\n * @param {string} value - A possibly incomplete phone number. Either in E.164 format or in a form of national number digits.\n * @param {string|object} [optionsOrDefaultCountry] - A two-letter (\"ISO 3166-1 alpha-2\") country code, or an object of shape `{ defaultCountry?: string, defaultCallingCode?: string }`.\n * @return {string} Formatted (possibly incomplete) phone number.\n */\nexport default function formatIncompletePhoneNumber(value, optionsOrDefaultCountry, metadata) {\n\tif (!metadata) {\n\t\tmetadata = optionsOrDefaultCountry\n\t\toptionsOrDefaultCountry = undefined\n\t}\n\treturn new AsYouType(optionsOrDefaultCountry, metadata).input(value)\n}","import withMetadataArgument from './withMetadataArgument.js'\nimport { parsePhoneNumberWithError as _parsePhoneNumberWithError } from '../../core/index.js'\n\nexport function parsePhoneNumberWithError() {\n\treturn withMetadataArgument(_parsePhoneNumberWithError, arguments)\n}\n","import withMetadataArgument from './withMetadataArgument.js'\nimport { default as _parsePhoneNumber } from '../../core/index.js'\n\nexport function parsePhoneNumber() {\n\treturn withMetadataArgument(_parsePhoneNumber, arguments)\n}","import withMetadataArgument from './withMetadataArgument.js'\nimport { isValidPhoneNumber as _isValidPhoneNumber } from '../../core/index.js'\n\nexport function isValidPhoneNumber() {\n\treturn withMetadataArgument(_isValidPhoneNumber, arguments)\n}","import withMetadataArgument from './withMetadataArgument.js'\nimport { isPossiblePhoneNumber as _isPossiblePhoneNumber } from '../../core/index.js'\n\nexport function isPossiblePhoneNumber() {\n\treturn withMetadataArgument(_isPossiblePhoneNumber, arguments)\n}","import withMetadataArgument from './withMetadataArgument.js'\nimport { validatePhoneNumberLength as _validatePhoneNumberLength } from '../../core/index.js'\n\nexport function validatePhoneNumberLength() {\n\treturn withMetadataArgument(_validatePhoneNumberLength, arguments)\n}","import withMetadataArgument from './withMetadataArgument.js'\nimport { findNumbers as _findNumbers } from '../../core/index.js'\n\nexport function findNumbers() {\n\treturn withMetadataArgument(_findNumbers, arguments)\n}","import withMetadataArgument from './withMetadataArgument.js'\nimport { searchNumbers as _searchNumbers } from '../../core/index.js'\n\nexport function searchNumbers() {\n\treturn withMetadataArgument(_searchNumbers, arguments)\n}","import withMetadataArgument from './withMetadataArgument.js'\nimport { findPhoneNumbersInText as _findPhoneNumbersInText } from '../../core/index.js'\n\nexport function findPhoneNumbersInText() {\n\treturn withMetadataArgument(_findPhoneNumbersInText, arguments)\n}","import withMetadataArgument from './withMetadataArgument.js'\nimport { searchPhoneNumbersInText as _searchPhoneNumbersInText } from '../../core/index.js'\n\nexport function searchPhoneNumbersInText() {\n\treturn withMetadataArgument(_searchPhoneNumbersInText, arguments)\n}","// Importing from a \".js\" file is a workaround for Node.js \"ES Modules\"\n// importing system which is even uncapable of importing \"*.json\" files.\nimport metadata from '../../metadata.min.json.js'\n\nimport { PhoneNumberMatcher as _PhoneNumberMatcher } from '../../core/index.js'\n\nexport function PhoneNumberMatcher(text, options) {\n\treturn _PhoneNumberMatcher.call(this, text, options, metadata)\n}\nPhoneNumberMatcher.prototype = Object.create(_PhoneNumberMatcher.prototype, {})\nPhoneNumberMatcher.prototype.constructor = PhoneNumberMatcher\n","// Importing from a \".js\" file is a workaround for Node.js \"ES Modules\"\n// importing system which is even uncapable of importing \"*.json\" files.\nimport metadata from '../../metadata.min.json.js'\n\nimport { AsYouType as _AsYouType } from '../../core/index.js'\n\nexport function AsYouType(country) {\n\treturn _AsYouType.call(this, country, metadata)\n}\n\nAsYouType.prototype = Object.create(_AsYouType.prototype, {})\nAsYouType.prototype.constructor = AsYouType","import withMetadataArgument from './withMetadataArgument.js'\nimport { isSupportedCountry as _isSupportedCountry } from '../../core/index.js'\n\nexport function isSupportedCountry() {\n\treturn withMetadataArgument(_isSupportedCountry, arguments)\n}","import withMetadataArgument from './withMetadataArgument.js'\nimport { getCountries as _getCountries } from '../../core/index.js'\n\nexport function getCountries() {\n\treturn withMetadataArgument(_getCountries, arguments)\n}","import withMetadataArgument from './withMetadataArgument.js'\nimport { getCountryCallingCode as _getCountryCallingCode } from '../../core/index.js'\n\nexport function getCountryCallingCode() {\n\treturn withMetadataArgument(_getCountryCallingCode, arguments)\n}","import withMetadataArgument from './withMetadataArgument.js'\nimport { getExtPrefix as _getExtPrefix } from '../../core/index.js'\n\nexport function getExtPrefix() {\n\treturn withMetadataArgument(_getExtPrefix, arguments)\n}","// Importing from a \".js\" file is a workaround for Node.js \"ES Modules\"\n// importing system which is even uncapable of importing \"*.json\" files.\nimport metadata from '../../metadata.min.json.js'\n\nimport { Metadata as _Metadata } from '../../core/index.js'\n\nexport function Metadata() {\n\treturn _Metadata.call(this, metadata)\n}\n\nMetadata.prototype = Object.create(_Metadata.prototype, {})\nMetadata.prototype.constructor = Metadata","import withMetadataArgument from './withMetadataArgument.js'\nimport { getExampleNumber as _getExampleNumber } from '../../core/index.js'\n\nexport function getExampleNumber() {\n\treturn withMetadataArgument(_getExampleNumber, arguments)\n}","import withMetadataArgument from './withMetadataArgument.js'\nimport { formatIncompletePhoneNumber as _formatIncompletePhoneNumber } from '../../core/index.js'\n\nexport function formatIncompletePhoneNumber() {\n\treturn withMetadataArgument(_formatIncompletePhoneNumber, arguments)\n}","// Importing from a \".js\" file is a workaround for Node.js \"ES Modules\"\n// importing system which is even uncapable of importing \"*.json\" files.\nimport metadata from '../../metadata.min.json.js'\n\nimport { PhoneNumber as _PhoneNumber } from '../../core/index.js'\n\nexport function PhoneNumber(number) {\n\treturn _PhoneNumber.call(this, number, metadata)\n}\n// Setting `PhoneNumber.prototype` via `Object.create()`\n// didn't work with `instanceof` operator for some strange reason.\n// https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/201\n// Because of that issue, the `Object.create()` call had to be removed.\n// It didn't result in any drawbacks because the `{}` argument of that call\n// means that the `PhoneNumber` class created here adds 0 new properties\n// to the existing `PhoneNumber` class it attempts to extend here.\n// Hence, the `Object.create()` call can be omitted\n// and the `prototype` can just be copied over as is.\n// PhoneNumber.prototype = Object.create(_PhoneNumber.prototype, {})\nPhoneNumber.prototype = _PhoneNumber.prototype\nPhoneNumber.prototype.constructor = PhoneNumber\n","import _parseNumber from '../parse.js'\nimport normalizeArguments from '../normalizeArguments.js'\n\nexport default function parseNumber() {\n\tconst { text, options, metadata } = normalizeArguments(arguments)\n\treturn _parseNumber(text, options, metadata)\n}","import withMetadataArgument from '../min/exports/withMetadataArgument.js'\n\nimport _parse from '../es6/legacy/parse.js'\n\nexport function parse() {\n\treturn withMetadataArgument(_parse, arguments)\n}\n","import _formatNumber from '../format.js'\nimport parse from '../parse.js'\nimport isObject from '../helpers/isObject.js'\n\nexport default function formatNumber() {\n\tconst {\n\t\tinput,\n\t\tformat,\n\t\toptions,\n\t\tmetadata\n\t} = normalizeArguments(arguments)\n\n\treturn _formatNumber(input, format, options, metadata)\n}\n\n// Sort out arguments\nfunction normalizeArguments(args)\n{\n\t// This line of code appeared to not work correctly with `babel`/`istanbul`:\n\t// for some weird reason, it caused coverage less than 100%.\n\t// That's because `babel`/`istanbul`, for some weird reason,\n\t// apparently doesn't know how to properly exclude Babel polyfills from code coverage.\n\t//\n\t// const [arg_1, arg_2, arg_3, arg_4, arg_5] = Array.prototype.slice.call(args)\n\n\tconst arg_1 = args[0]\n\tconst arg_2 = args[1]\n\tconst arg_3 = args[2]\n\tconst arg_4 = args[3]\n\tconst arg_5 = args[4]\n\n\tlet input\n\tlet format\n\tlet options\n\tlet metadata\n\n\t// Sort out arguments.\n\n\t// If the phone number is passed as a string.\n\t// `format('8005553535', ...)`.\n\tif (typeof arg_1 === 'string')\n\t{\n\t\t// If country code is supplied.\n\t\t// `format('8005553535', 'RU', 'NATIONAL', [options], metadata)`.\n\t\tif (typeof arg_3 === 'string')\n\t\t{\n\t\t\tformat = arg_3\n\n\t\t\tif (arg_5)\n\t\t\t{\n\t\t\t\toptions  = arg_4\n\t\t\t\tmetadata = arg_5\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmetadata = arg_4\n\t\t\t}\n\n\t\t\tinput = parse(arg_1, { defaultCountry: arg_2, extended: true }, metadata)\n\t\t}\n\t\t// Just an international phone number is supplied\n\t\t// `format('+78005553535', 'NATIONAL', [options], metadata)`.\n\t\telse\n\t\t{\n\t\t\tif (typeof arg_2 !== 'string')\n\t\t\t{\n\t\t\t\tthrow new Error('`format` argument not passed to `formatNumber(number, format)`')\n\t\t\t}\n\n\t\t\tformat = arg_2\n\n\t\t\tif (arg_4)\n\t\t\t{\n\t\t\t\toptions  = arg_3\n\t\t\t\tmetadata = arg_4\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmetadata = arg_3\n\t\t\t}\n\n\t\t\tinput = parse(arg_1, { extended: true }, metadata)\n\t\t}\n\t}\n\t// If the phone number is passed as a parsed number object.\n\t// `format({ phone: '8005553535', country: 'RU' }, 'NATIONAL', [options], metadata)`.\n\telse if (isObject(arg_1))\n\t{\n\t\tinput  = arg_1\n\t\tformat = arg_2\n\n\t\tif (arg_4)\n\t\t{\n\t\t\toptions  = arg_3\n\t\t\tmetadata = arg_4\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmetadata = arg_3\n\t\t}\n\t}\n\telse throw new TypeError('A phone number must either be a string or an object of shape { phone, [country] }.')\n\n\t// Legacy lowercase formats.\n\tif (format === 'International') {\n\t\tformat = 'INTERNATIONAL'\n\t} else if (format === 'National') {\n\t\tformat = 'NATIONAL'\n\t}\n\n\treturn {\n\t\tinput,\n\t\tformat,\n\t\toptions,\n\t\tmetadata\n\t}\n}","import withMetadataArgument from '../min/exports/withMetadataArgument.js'\n\nimport _format from '../es6/legacy/format.js'\n\nexport function format() {\n\treturn withMetadataArgument(_format, arguments)\n}\n","import isViablePhoneNumber from '../helpers/isViablePhoneNumber.js'\nimport _getNumberType from '../helpers/getNumberType.js'\nimport isObject from '../helpers/isObject.js'\nimport parse from '../parse.js'\n\n// Finds out national phone number type (fixed line, mobile, etc)\nexport default function getNumberType() {\n\tconst { input, options, metadata } = normalizeArguments(arguments)\n\t// `parseNumber()` would return `{}` when no phone number could be parsed from the input.\n\tif (!input.phone) {\n\t\treturn\n\t}\n\treturn _getNumberType(input, options, metadata)\n}\n\n// Sort out arguments\nexport function normalizeArguments(args)\n{\n\t// This line of code appeared to not work correctly with `babel`/`istanbul`:\n\t// for some weird reason, it caused coverage less than 100%.\n\t// That's because `babel`/`istanbul`, for some weird reason,\n\t// apparently doesn't know how to properly exclude Babel polyfills from code coverage.\n\t//\n\t// const [arg_1, arg_2, arg_3, arg_4] = Array.prototype.slice.call(args)\n\n\tconst arg_1 = args[0]\n\tconst arg_2 = args[1]\n\tconst arg_3 = args[2]\n\tconst arg_4 = args[3]\n\n\tlet input\n\tlet options = {}\n\tlet metadata\n\n\t// If the phone number is passed as a string.\n\t// `getNumberType('88005553535', ...)`.\n\tif (typeof arg_1 === 'string')\n\t{\n\t\t// If \"default country\" argument is being passed\n\t\t// then convert it to an `options` object.\n\t\t// `getNumberType('88005553535', 'RU', metadata)`.\n\t\tif (!isObject(arg_2))\n\t\t{\n\t\t\tif (arg_4)\n\t\t\t{\n\t\t\t\toptions = arg_3\n\t\t\t\tmetadata = arg_4\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmetadata = arg_3\n\t\t\t}\n\n\t\t\t// `parse` extracts phone numbers from raw text,\n\t\t\t// therefore it will cut off all \"garbage\" characters,\n\t\t\t// while this `validate` function needs to verify\n\t\t\t// that the phone number contains no \"garbage\"\n\t\t\t// therefore the explicit `isViablePhoneNumber` check.\n\t\t\tif (isViablePhoneNumber(arg_1))\n\t\t\t{\n\t\t\t\tinput = parse(arg_1, { defaultCountry: arg_2 }, metadata)\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tinput = {}\n\t\t\t}\n\t\t}\n\t\t// No \"resrict country\" argument is being passed.\n\t\t// International phone number is passed.\n\t\t// `getNumberType('+78005553535', metadata)`.\n\t\telse\n\t\t{\n\t\t\tif (arg_3)\n\t\t\t{\n\t\t\t\toptions = arg_2\n\t\t\t\tmetadata = arg_3\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmetadata = arg_2\n\t\t\t}\n\n\t\t\t// `parse` extracts phone numbers from raw text,\n\t\t\t// therefore it will cut off all \"garbage\" characters,\n\t\t\t// while this `validate` function needs to verify\n\t\t\t// that the phone number contains no \"garbage\"\n\t\t\t// therefore the explicit `isViablePhoneNumber` check.\n\t\t\tif (isViablePhoneNumber(arg_1))\n\t\t\t{\n\t\t\t\tinput = parse(arg_1, undefined, metadata)\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tinput = {}\n\t\t\t}\n\t\t}\n\t}\n\t// If the phone number is passed as a parsed phone number.\n\t// `getNumberType({ phone: '88005553535', country: 'RU' }, ...)`.\n\telse if (isObject(arg_1))\n\t{\n\t\tinput = arg_1\n\n\t\tif (arg_3)\n\t\t{\n\t\t\toptions = arg_2\n\t\t\tmetadata = arg_3\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmetadata = arg_2\n\t\t}\n\t}\n\telse throw new TypeError('A phone number must either be a string or an object of shape { phone, [country] }.')\n\n\treturn {\n\t\tinput,\n\t\toptions,\n\t\tmetadata\n\t}\n}","import withMetadataArgument from '../min/exports/withMetadataArgument.js'\n\nimport _getNumberType from '../es6/legacy/getNumberType.js'\n\nexport function getNumberType() {\n\treturn withMetadataArgument(_getNumberType, arguments)\n}\n","import { normalizeArguments } from './getNumberType.js'\nimport _isPossibleNumber from '../isPossible.js'\n\n/**\n * Checks if a given phone number is possible.\n * Which means it only checks phone number length\n * and doesn't test any regular expressions.\n *\n * Examples:\n *\n * ```js\n * isPossibleNumber('+78005553535', metadata)\n * isPossibleNumber('8005553535', 'RU', metadata)\n * isPossibleNumber('88005553535', 'RU', metadata)\n * isPossibleNumber({ phone: '8005553535', country: 'RU' }, metadata)\n * ```\n */\nexport default function isPossibleNumber() {\n\tconst { input, options, metadata } = normalizeArguments(arguments)\n\t// `parseNumber()` would return `{}` when no phone number could be parsed from the input.\n\tif (!input.phone \u0026\u0026 !(options \u0026\u0026 options.v2)) {\n\t\treturn false\n\t}\n\treturn _isPossibleNumber(input, options, metadata)\n}","// Deprecated.\n\nimport withMetadataArgument from '../min/exports/withMetadataArgument.js'\n\nimport _isPossibleNumber from '../es6/legacy/isPossibleNumber.js'\n\nexport function isPossibleNumber() {\n\treturn withMetadataArgument(_isPossibleNumber, arguments)\n}\n","import _isValidNumber from '../isValid.js'\nimport { normalizeArguments } from './getNumberType.js'\n\n// Finds out national phone number type (fixed line, mobile, etc)\nexport default function isValidNumber() {\n\tconst { input, options, metadata } = normalizeArguments(arguments)\n\t// `parseNumber()` would return `{}` when no phone number could be parsed from the input.\n\tif (!input.phone) {\n\t\treturn false\n\t}\n\treturn _isValidNumber(input, options, metadata)\n}","// Deprecated.\n\nimport withMetadataArgument from '../min/exports/withMetadataArgument.js'\n\nimport _isValidNumber from '../es6/legacy/isValidNumber.js'\n\nexport function isValidNumber() {\n\treturn withMetadataArgument(_isValidNumber, arguments)\n}\n","import isValidNumber from '../isValid.js'\n\n/**\n * Checks if a given phone number is valid within a given region.\n * Is just an alias for `phoneNumber.isValid() \u0026\u0026 phoneNumber.country === country`.\n * https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\n */\nexport default function isValidNumberForRegion(input, country, options, metadata) {\n\t// If assigning the `{}` default value is moved to the arguments above,\n\t// code coverage would decrease for some weird reason.\n\toptions = options || {}\n\treturn input.country === country \u0026\u0026 isValidNumber(input, options, metadata)\n}","import isViablePhoneNumber from '../helpers/isViablePhoneNumber.js'\nimport parseNumber from '../parse.js'\nimport _isValidNumberForRegion from './isValidNumberForRegion_.js'\n\n// This function has been deprecated and is not exported as\n// `isValidPhoneNumberForCountry()` or `isValidPhoneNumberForRegion()`.\n//\n// The rationale is:\n//\n// * We don't use the \"region\" word, so \"country\" would be better.\n//\n// * It could be substituted with:\n//\n// ```js\n// export default function isValidPhoneNumberForCountry(phoneNumberString, country) {\n// \tconst phoneNumber = parsePhoneNumber(phoneNumberString, {\n// \t\tdefaultCountry: country,\n// \t\t// Demand that the entire input string must be a phone number.\n// \t\t// Otherwise, it would \"extract\" a phone number from an input string.\n// \t\textract: false\n// \t})\n// \tif (!phoneNumber) {\n// \t\treturn false\n// \t}\n// \tif (phoneNumber.country !== country) {\n// \t\treturn false\n// \t}\n// \treturn phoneNumber.isValid()\n// }\n// ```\n//\n// * Same function could be used for `isPossiblePhoneNumberForCountry()`\n//   by replacing `isValid()` with `isPossible()`.\n//\n// * The reason why this function is not exported is because its result is ambiguous.\n//   Suppose `false` is returned. It could mean any of:\n//   * Not a phone number.\n//   * The phone number is valid but belongs to another country or another calling code.\n//   * The phone number belongs to the correct country but is not valid digit-wise.\n//   All those three cases should be handled separately from a \"User Experience\" standpoint.\n//   Simply showing \"Invalid phone number\" error in all of those cases would be lazy UX.\n\nexport default function isValidNumberForRegion(number, country, metadata) {\n\tif (typeof number !== 'string') {\n\t\tthrow new TypeError('number must be a string')\n\t}\n\tif (typeof country !== 'string') {\n\t\tthrow new TypeError('country must be a string')\n\t}\n\t// `parse` extracts phone numbers from raw text,\n\t// therefore it will cut off all \"garbage\" characters,\n\t// while this `validate` function needs to verify\n\t// that the phone number contains no \"garbage\"\n\t// therefore the explicit `isViablePhoneNumber` check.\n\tlet input\n\tif (isViablePhoneNumber(number)) {\n\t\tinput = parseNumber(number, { defaultCountry: country }, metadata)\n\t} else {\n\t\tinput = {}\n\t}\n\treturn _isValidNumberForRegion(input, country, undefined, metadata)\n}","import withMetadataArgument from '../min/exports/withMetadataArgument.js'\n\nimport _isValidNumberForRegion from '../es6/legacy/isValidNumberForRegion.js'\n\nexport function isValidNumberForRegion() {\n\treturn withMetadataArgument(_isValidNumberForRegion, arguments)\n}\n","import parse from '../parse.js'\nimport { VALID_PHONE_NUMBER_WITH_EXTENSION } from '../helpers/isViablePhoneNumber.js'\n\nimport parsePreCandidate from '../findNumbers/parsePreCandidate.js'\nimport isValidPreCandidate from '../findNumbers/isValidPreCandidate.js'\nimport isValidCandidate from '../findNumbers/isValidCandidate.js'\n\nimport {\n\t// PLUS_CHARS,\n\tVALID_PUNCTUATION,\n\t// VALID_DIGITS,\n\tWHITESPACE\n} from '../constants.js'\n\nconst WHITESPACE_IN_THE_BEGINNING_PATTERN = new RegExp('^[' + WHITESPACE + ']+')\nconst PUNCTUATION_IN_THE_END_PATTERN = new RegExp('[' + VALID_PUNCTUATION + ']+$')\n\n/**\n * Extracts a parseable phone number including any opening brackets, etc.\n * @param  {string} text - Input.\n * @return {object} `{ ?number, ?startsAt, ?endsAt }`.\n */\nexport default class PhoneNumberSearch {\n\tconstructor(text, options, metadata) {\n\t\tthis.text = text\n\t\t// If assigning the `{}` default value is moved to the arguments above,\n\t\t// code coverage would decrease for some weird reason.\n\t\tthis.options = options || {}\n\t\tthis.metadata = metadata\n\n\t\t// Iteration tristate.\n\t\tthis.state = 'NOT_READY'\n\n\t\tthis.regexp = new RegExp(VALID_PHONE_NUMBER_WITH_EXTENSION, 'ig')\n\t}\n\n\tfind() {\n\t\tconst matches = this.regexp.exec(this.text)\n\t\tif (!matches) {\n\t\t\treturn\n\t\t}\n\n\t\tlet number = matches[0]\n\t\tlet startsAt = matches.index\n\n\t\tnumber = number.replace(WHITESPACE_IN_THE_BEGINNING_PATTERN, '')\n\t\tstartsAt += matches[0].length - number.length\n\t\t// Fixes not parsing numbers with whitespace in the end.\n\t\t// Also fixes not parsing numbers with opening parentheses in the end.\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/252\n\t\tnumber = number.replace(PUNCTUATION_IN_THE_END_PATTERN, '')\n\n\t\tnumber = parsePreCandidate(number)\n\n\t\tconst result = this.parseCandidate(number, startsAt)\n\t\tif (result) {\n\t\t\treturn result\n\t\t}\n\n\t\t// Tail recursion.\n\t\t// Try the next one if this one is not a valid phone number.\n\t\treturn this.find()\n\t}\n\n\tparseCandidate(number, startsAt) {\n\t\tif (!isValidPreCandidate(number, startsAt, this.text)) {\n\t\t\treturn\n\t\t}\n\n\t\t// Don't parse phone numbers which are non-phone numbers\n\t\t// due to being part of something else (e.g. a UUID).\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/213\n\t\t// Copy-pasted from Google's `PhoneNumberMatcher.js` (`.parseAndValidate()`).\n\t\tif (!isValidCandidate(number, startsAt, this.text, this.options.extended ? 'POSSIBLE' : 'VALID')) {\n\t\t\treturn\n\t\t}\n\n\t\t// // Prepend any opening brackets left behind by the\n\t\t// // `PHONE_NUMBER_START_PATTERN` regexp.\n\t\t// const text_before_number = text.slice(this.searching_from, startsAt)\n\t\t// const full_number_starts_at = text_before_number.search(BEFORE_NUMBER_DIGITS_PUNCTUATION)\n\t\t// if (full_number_starts_at \u003e= 0) {\n\t\t// \tnumber = text_before_number.slice(full_number_starts_at) + number\n\t\t// \tstartsAt = full_number_starts_at\n\t\t// }\n\t\t//\n\t\t// this.searching_from = matches.lastIndex\n\n\t\tconst result = parse(number, this.options, this.metadata)\n\t\tif (!result.phone) {\n\t\t\treturn\n\t\t}\n\n\t\tresult.startsAt = startsAt\n\t\tresult.endsAt = startsAt + number.length\n\t\treturn result\n\t}\n\n\thasNext() {\n\t\tif (this.state === 'NOT_READY') {\n\t\t\tthis.last_match = this.find()\n\t\t\tif (this.last_match) {\n\t\t\t\tthis.state = 'READY'\n\t\t\t} else {\n\t\t\t\tthis.state = 'DONE'\n\t\t\t}\n\t\t}\n\t\treturn this.state === 'READY'\n\t}\n\n\tnext() {\n\t\t// Check the state and find the next match as a side-effect if necessary.\n\t\tif (!this.hasNext()) {\n\t\t\tthrow new Error('No next element')\n\t\t}\n\t\t// Don't retain that memory any longer than necessary.\n\t\tconst result = this.last_match\n\t\tthis.last_match = null\n\t\tthis.state = 'NOT_READY'\n\t\treturn result\n\t}\n}","// This is a legacy function.\n// Use `findNumbers()` instead.\n\nimport createExtensionPattern from '../helpers/extension/createExtensionPattern.js'\n\nimport PhoneNumberSearch from './PhoneNumberSearch.js'\n\n/**\n * Regexp of all possible ways to write extensions, for use when parsing. This\n * will be run as a case-insensitive regexp match. Wide character versions are\n * also provided after each ASCII version. There are three regular expressions\n * here. The first covers RFC 3966 format, where the extension is added using\n * ';ext='. The second more generic one starts with optional white space and\n * ends with an optional full stop (.), followed by zero or more spaces/tabs\n * /commas and then the numbers themselves. The other one covers the special\n * case of American numbers where the extension is written with a hash at the\n * end, such as '- 503#'. Note that the only capturing groups should be around\n * the digits that you want to capture as part of the extension, or else parsing\n * will fail! We allow two options for representing the accented o - the\n * character itself, and one in the unicode decomposed form with the combining\n * acute accent.\n */\nexport const EXTN_PATTERNS_FOR_PARSING = createExtensionPattern('parsing')\n\n// // Regular expression for getting opening brackets for a valid number\n// // found using `PHONE_NUMBER_START_PATTERN` for prepending those brackets to the number.\n// const BEFORE_NUMBER_DIGITS_PUNCTUATION = new RegExp('[' + OPENING_BRACKETS + ']+' + '[' + WHITESPACE + ']*' + '$')\n\n// const VALID_PRECEDING_CHARACTER_PATTERN = /[^a-zA-Z0-9]/\n\nexport default function findPhoneNumbers(text, options, metadata) {\n\t/* istanbul ignore if */\n\tif (options === undefined) {\n\t\toptions = {}\n\t}\n\tconst search = new PhoneNumberSearch(text, options, metadata)\n\tconst phones = []\n\twhile (search.hasNext()) {\n\t\tphones.push(search.next())\n\t}\n\treturn phones\n}\n\n/**\n * @return ES6 `for ... of` iterator.\n */\nexport function searchPhoneNumbers(text, options, metadata) {\n\t/* istanbul ignore if */\n\tif (options === undefined) {\n\t\toptions = {}\n\t}\n\n\tconst search = new PhoneNumberSearch(text, options, metadata)\n\n\tconst iterator = () =\u003e {\n\t\treturn {\n\t\t\tnext: () =\u003e {\n\t\t\t\tif (search.hasNext()) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdone: false,\n\t\t\t\t\t\tvalue: search.next()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tdone: true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// This line of code didn't really work with `babel`/`istanbul`:\n\t// for some weird reason, it showed code coverage less than 100%.\n\t// That's because `babel`/`istanbul`, for some weird reason,\n\t// apparently doesn't know how to properly exclude Babel polyfills from code coverage.\n\t//\n\t// const iterable = { [Symbol.iterator]: iterator }\n\n\tconst iterable = {}\n\titerable[Symbol.iterator] = iterator\n\treturn iterable\n}\n","// This is a legacy function.\n// Use `findNumbers()` instead.\n\nimport _findPhoneNumbers, { searchPhoneNumbers as _searchPhoneNumbers } from './findPhoneNumbersInitialImplementation.js'\nimport normalizeArguments from '../normalizeArguments.js'\n\nexport default function findPhoneNumbers()\n{\n\tconst { text, options, metadata } = normalizeArguments(arguments)\n\treturn _findPhoneNumbers(text, options, metadata)\n}\n\n/**\n * @return ES6 `for ... of` iterator.\n */\nexport function searchPhoneNumbers()\n{\n\tconst { text, options, metadata } = normalizeArguments(arguments)\n\treturn _searchPhoneNumbers(text, options, metadata)\n}","import withMetadataArgument from '../min/exports/withMetadataArgument.js'\n\nimport _findPhoneNumbers from '../es6/legacy/findPhoneNumbers.js'\n\nexport function findPhoneNumbers() {\n\treturn withMetadataArgument(_findPhoneNumbers, arguments)\n}\n","import withMetadataArgument from '../min/exports/withMetadataArgument.js'\n\nimport { searchPhoneNumbers as _searchPhoneNumbers } from '../es6/legacy/findPhoneNumbers.js'\n\nexport function searchPhoneNumbers() {\n\treturn withMetadataArgument(_searchPhoneNumbers, arguments)\n}\n","// Importing from a \".js\" file is a workaround for Node.js \"ES Modules\"\n// importing system which is even uncapable of importing \"*.json\" files.\nimport metadata from '../metadata.min.json.js'\n\nimport _PhoneNumberSearch from '../es6/legacy/PhoneNumberSearch.js'\n\nexport function PhoneNumberSearch(text, options) {\n\t_PhoneNumberSearch.call(this, text, options, metadata)\n}\n\n// Deprecated.\nPhoneNumberSearch.prototype = Object.create(_PhoneNumberSearch.prototype, {})\nPhoneNumberSearch.prototype.constructor = PhoneNumberSearch\n"],"version":3}
