{"version":3,"mappings":"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AYxH,KAAOsH,GACvB,OAAOC,EAASlH,cAAgBmH,EAAUnH,cCO7B,YAAoBgH,EAAeC,IAChDxH,OAAa,EAAGC,WAChB,IAAIwH,GAAWvH,OAAOqH,GAClBG,KAAYxH,KAAOsH,GACnBjG,EAAOkG,EAAStQ,UAAYuQ,EAAUvQ,UAC1C,OAAIoK,EAAO,GACF,EACEA,EAAO,EACT,EAGAA,EC1BI,YAAmBxB,IAChCC,OAAa,EAAGC,WAChB,IAAI7J,GAAO8J,OAAOH,GACdsB,EAAMjL,EAAKkL,SACf,OAAe,IAARD,GAAqB,IAARA,CAAQ,CCiB9B,MAAMsG,GAAgB,wEAWhBC,GACJ,6JASIC,GAAqC,kCAUrCC,GAAqC,kCAcrCC,GACJ,kGAWIC,GAAiC,mEASjCC,GAA8B,0EAS9BC,GAA8B,oDAQ9BC,GAA4B,cAQ5BC,GAA6B,UAQ7BC,GAA6B,6BAQ7BC,GAAmC,0CAenCC,GAAiB,6EAUjBC,GAA6B,iFAU7BC,GAAwB,kFAUxBC,GAAqC,6EAOrCC,GAA2BpN,IAirBxBrb,SACL0oB,OACAxlB,SAAM,KACNwiB,OACA9lB,SAASimB,KAjrByB,CAClC,MACA,OACA,MACA,MACA,OACA,KACA,MACA,KACA,OACA,MACA,KACA,MACA,OACA,KACA,MACA,KACA,KACA,MACA,OACA,KACA,OACA,KACA,OACA,MACA,KACA,MACA,MACA,KACA,KACA,OACA,OACA,OACA,MACA,OACA,KACA,OACA,OACA,KACA,KACA,OACA,OACA,KACA,MACA,KACA,MACA,KACA,KACA,OACA,OACA,OACA,MACA,KACA,MACA,MACA,OACA,MACA,MACA,KACA,KACA,OACA,OACA,MACA,KACA,KACA,KACA,KACA,MACA,OACA,OACA,MACA,MACA,KACA,OACA,OACA,KACA,MACA,MACA,KACA,KACA,OACA,MACA,OACA,MACA,OACA,MACA,MACA,KACA,KACA,KACA,MACA,OACA,KACA,KACA,KACA,KACA,MACA,KACA,MACA,OACA,MACA,OACA,MACA,OACA,MACA,OACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,OACA,MACA,KACA,KACA,MACA,OACA,KACA,MACA,MACA,KACA,KACA,OACA,KACA,OACA,OACA,KACA,KACA,OACA,KACA,KACA,KACA,MACA,OACA,OACA,MACA,KACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,OACA,KACA,MACA,OACA,OACA,MACA,OACA,MACA,KACA,OACA,OACA,OACA,MACA,MACA,OACA,OACA,MACA,KACA,KACA,KACA,MACA,KACA,OACA,MACA,MACA,MACA,OACA,OACA,MACA,KACA,MACA,KACA,MACA,MACA,KACA,KACA,KACA,OACA,KACA,MACA,KACA,KACA,MACA,OACA,OACA,MACA,OACA,OACA,OACA,KACA,OACA,OACA,OACA,OACA,OACA,MACA,KACA,KACA,OACA,MACA,KACA,KACA,MACA,OACA,OACA,MACA,KACA,OACA,MACA,MACA,MACA,OACA,MACA,KACA,MACA,OACA,MACA,MACA,KACA,OACA,KACA,MACA,KACA,MACA,OACA,KACA,KACA,OACA,KACA,KACA,OACA,KACA,MACA,KACA,OACA,MACA,MACA,KACA,OACA,OACA,MACA,OACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,OACA,KACA,KACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,MACA,KACA,MACA,KACA,KACA,OACA,MACA,MACA,KACA,OACA,KACA,KACA,MACA,OACA,MACA,MACA,KACA,KACA,OACA,MACA,KACA,KACA,OACA,OACA,KACA,MACA,OACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,MACA,KACA,OACA,MACA,OACA,MACA,KACA,OACA,MACA,MACA,KACA,MACA,MACA,KACA,OACA,MACA,MACA,KACA,OACA,OACA,KACA,MACA,KACA,KACA,KACA,MACA,MACA,OACA,KACA,KACA,KACA,OACA,MACA,KACA,MACA,OACA,KACA,KACA,KACA,KACA,OACA,MACA,MACA,KACA,KACA,MACA,OACA,OACA,KACA,OACA,OACA,OACA,OACA,OACA,OACA,KACA,MACA,MACA,OACA,OACA,MACA,OACA,MACA,KACA,KACA,KACA,MACA,OACA,KACA,OACA,KACA,KACA,KACA,OACA,MACA,MACA,MACA,KACA,KACA,KACA,MACA,OACA,OACA,MACA,OACA,KACA,KACA,MACA,OACA,OACA,MACA,KACA,KACA,MACA,MACA,KACA,MACA,KACA,KACA,OACA,OACA,MACA,MACA,MACA,OACA,MACA,KACA,KACA,KACA,KACA,MACA,KACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,OACA,OACA,MACA,KACA,KACA,MACA,MACA,MACA,OACA,OACA,KACA,MACA,KACA,MACA,MACA,KACA,OACA,OACA,KACA,KACA,MACA,KACA,KACA,MACA,MACA,MACA,KACA,MACA,KACA,MACA,MACA,OACA,KACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,MACA,KACA,OACA,OACA,MACA,OACA,KACA,MACA,KACA,KACA,KACA,MACA,OACA,MACA,MACA,OACA,OACA,KACA,KACA,OACA,OACA,KACA,KACA,MACA,OACA,OACA,OACA,KACA,MACA,OACA,OACA,MACA,KACA,KACA,MACA,KACA,MACA,KACA,KACA,OACA,MACA,OACA,KACA,OACA,MACA,OACA,MACA,OACA,OACA,OACA,MACA,MACA,MACA,OACA,KACA,OACA,KACA,OACA,KACA,OACA,MACA,KACA,MACA,KACA,OACA,OACA,MACA,OACA,MACA,OACA,OACA,KACA,MACA,MACA,KACA,MACA,MACA,OACA,KACA,KACA,OACA,OACA,MACA,MACA,MACA,OACA,MACA,KACA,KACA,OACA,OACA,OACA,OACA,KACA,OACA,OACA,OACA,KACA,KACA,MACA,OACA,MACA,KACA,KACA,KACA,OACA,KACA,OACA,OACA,OACA,MACA,MACA,OACA,KACA,MACA,KACA,KACA,OACA,MACA,KACA,OACA,KACA,KACA,KACA,KACA,MACA,OACA,MACA,OACA,KACA,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,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAGKjmB,CAA2B8d,GAOvBb,GAAyB3G,IAC5BiW,GAAUjW,KjBjzCd,SAAiCA,GACrC,SAAOkW,oBAAgBlW,GiBgzCKmW,CAAuBnW,GAOxCyG,GAAyBzG,IAC5BiW,GAAUjW,KjBpzCd,SAAiCA,GACrC,MAAMoW,EAAW9H,GAAatO,GAE9B,OAAOqW,KADgBC,MAA4BF,EAASvW,MAAOuW,EAAS7K,MAAM,GAC5D7e,KAAM6pB,GAAkBA,EAActL,MAAQmL,EAASpW,MiBizCjDwW,CAAuBxW,GEn/CtC,YAAyB2J,EAAWsC,IACjDrC,OAAa,EAAGC,WAChB,IAAI4M,KAAY3M,KAAOH,GAAW5I,UAC9BmL,KAASnB,KAAUkB,GACvB,OAAO,IAAInM,KAAK2W,EAAYvK,GCFf,YAAkBvC,EAAWsC,IAC1CrC,OAAa,EAAGC,WAChB,IAAIqC,KAASnB,KAAUkB,GACvB,OAAOyK,GAAgB/M,EAvBE,KAuBSuC,EAASyK,CC+B9B,YAAiCC,EAAcC,EAAe5yB,IAC3E2lB,OAAa,EAAGC,WAChB,IAAIiN,GAAgBhN,OAAwB,MAAjB8M,OAAmD,EAASA,EAAaxG,OAAOrP,UACvGgW,GAAcjN,OAAwB,MAAjB8M,OAAmD,EAASA,EAAazG,KAAKpP,UACnGiW,GAAiBlN,OAAyB,MAAlB+M,OAAqD,EAASA,EAAczG,OAAOrP,UA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","names":["a","P","xe","message","console","error","isStorybookRuntime","window","target","propertyKey","symbol","Symbol","String","instances","Set","Object","defineProperty","get","add","this","set","value","setTimeout","forEach","instance","undefined","logError","constructor","name","nameOrOptions","entry","options","resolveSlotOptions","nativeElement","toElementFromEntry","toTextContentFromEntry","tryCreateEntryFromElement","tryCreateEntryFromTextContent","element","we","querySelector","bindingPropertyName","_a","getQueryBase","camelToDashCase","toEntryFromDomElement","kebabToCamelCase","slotOptions","entries","map","values","camelCased","querySelectorAll","length","Array","from","dashCased","templateElement","document","createElement","source","ge","__STORYBOOK_STORY_STORE__","_stories","story","ot","tt","ke","Me","parameters","docs","_b","_c","code","_d","join","innerHTML","content","body","propertyName","optionsObject","freeze","textContent","interpolate","normalizeWhitespace","ee","HTMLElement","te","TABS_PATTERN","MULTIPLE_SPACES_PATTERN","replace","trim","INTERPOLATION_PATTERN","interpolated","matchAll","placeholder","capture","viewstates","previousViewstate","nextViewstate","action","ctx","key","markDirty","httpCacheInterceptorProvider","provide","HTTP_INTERCEPTORS","useClass","Map","intercept","request","next","method","isUrlInCacheList","url","cachedResponse","cache","urlWithParams","of","handleRequest","includes","has","delete","handle","pipe","tap","stateEvent","HttpResponse","clone","requestUrl","cacheUrlList","filter","cachedUrl","HttpCacheInterceptor","factory","multi","cookieInterceptorProvider","newRequest","withCredentials","headers","CookieInterceptor","HttpStatusCode","mockup","pathMatcher","Error","startsWith","data","matchUrlPath","params","parseParams","onGet","onPost","onPut","onDelete","httpResponse","MethodNotAllowed","status","delay","throwError","HttpErrorResponse","payload","matchIdentifier","limit","Success","slice","NotFound","isNullable","BadRequest","some","item","assign","reduce","match","matcherSegments","split","urlSegments","URL","pathname","index","path","urlSearchParams","URLSearchParams","searchParams","fromEntries","PipesModule","DecimalPipe","DatePipe","imports","CommonModule","DEFAULT_WEBSOCKET_CONFIG","deserializer","e","JSON","parse","serializer","stringify","AnonymousSubject","urlConfigOrSource","destination","super","Observable","config","_config","_output","Subject","hasOwnProperty","WebSocketCtor","WebSocket","ReplaySubject","lift","operator","sock","WebSocketSubject","_resetState","_socket","multiplex","subMsg","unsubMsg","messageFilter","self","observer","err","subscription","subscribe","x","complete","unsubscribe","_connectSocket","protocol","binaryType","socket","Subscription","readyState","close","onopen","openObserver","queue","Subscriber","send","closingObserver","Wn","reason","TypeError","onerror","onclose","closeObserver","en","wasClean","onmessage","_subscribe","subscriber","observers","WebSocketService","messages","$webSocket","asObservable","connect","webSocket","DataLayerService","environment","actions","Ecommerce","dataLayer","dispatch","event","type","eventName","push","i0","ENVIRONMENT","impression","ecommerce","impressions","impressionFieldObject","click","product","actionField","products","productFieldObject","detail","remove","checkout","checkoutOption","checkout_option","purchase","transactionId","id","refund","promoClick","promotion","promotions","promotionFieldObject","promoView","FileDownloadService","download","fileContent","fileName","anchorElement","blob","Blob","href","createObjectURL","revokeObjectURL","GlobalStoreService","Event","$store","getGlobalStore","addEventListener","store","snapshot","setGlobalStore","dispatchEvent","_globalStoreEvent","getItem","sessionStorage","setItem","STORAGE_NAMESPACE","redux","devtools","__REDUX_DEVTOOLS_EXTENSION__","state","Store","uuid","stateChanges","store$","activeState","getStorage","storageEngine","sessionStorageItem","storageIdentifier","setStorage","patchStorage","clearStorage","removeItem","setState","setStorageAndState","patchState","mergeDeep","setAction","setTracking","actionName","init","StateModel","args","setStore","destroyed$","onDestroy","prototype","ngOnDestroy","takeUntil","call","State","features","ValidatorsModule","test","navigator","userAgent","InjectionToken","ENVIRONMENT_LOCALES","Errors","app","livemode","initialized","onStaticProvidersResolved","Elements","onSuccess","onError","bootstrap","then","catch","Exception","Initialized","keys","Undefined","locale","Locale","bundleUrl","BundleURL","bundleVersion","BundleVersion","StaticProvidersCallback","chatBaseUrl","warn","ChatBaseUrl","finlandBaseUrl","FinlandBaseUrl","selfServiceBaseUrl","SelfServiceBaseUrl","__webpack_public_path__","localeData","C","module","default","LocaleDataFailed","language","toLowerCase","region","trackingId","viewId","endpoints","selfServiceApi","Q","finlandApi","be","chatApi","Re","validate","publicPath","registerLocaleData","useValue","LOCALE_ID","ELEMENT_ROUTES","ElementsModule","parentModule","ModuleImported","elementRoutes","ngModule","ElementsRootModule","providers","injector","compiler","componentFactoryResolver","elementRoute","tagName","compileElements","observeElement","resolveComponentFactory","selector","component","customElements","ElementDefined","customElement","angularElementsModule","createCustomElement","define","CustomElement","whenDefined","mutationObserver","MutationObserver","disconnect","observe","subtree","childList","classList","elementModule","getElementModule","elementComponentTypes","getElementModuleFactory","create","_bootstrapComponents","BootstrapElement","elementComponentType","loadChildren","LoadModule","NoModule","NgModuleFactory","compileModuleAsync","CompileModule","expect","extend","toBeAssigned","received","assignedNodes","pass","toBeAssignedOrDuplicated","duplicatedSlot","slottableElements","getRootNode","host","children","childElement","slottableElement","MonthPipe","datePipe","transform","month","Date","coerceNumberProperty","date","setMonth","pure","RelativeTimeFormatPipe","dateFrom","dateTo","unit","calculateTimeDifference","format","Intl","RelativeTimeFormat","numeric","distanceInSeconds","Math","round","getTime","timeUnits","divisor","matchingUnit","find","unitItem","unitInfo","abs","UNITS","UnitPipe","decimalPipe","isUnitValueKey","j","unitValue","digitsInfo","resolveParameters","sv","fi","Number","AbstractValidatorDirective","Validators","ngOnChanges","changes","inputName","input","normalizeInput","currentValue","_enabled","enabled","_validator","createValidator","_onChange","control","registerOnValidatorChange","fn","MinDateValidator","coerceDateProperty","ElementsValidators","t","selectors","NG_VALIDATORS","useExisting","MinWeekValidator","MinMonthValidator","MinYearValidator","MaxDateValidator","MaxWeekValidator","MaxMonthValidator","MaxYearValidator","WeekdayValidator","coerceBooleanProperty","EmailAddressValidator","OrganizationNumberValidator","PersonalNumberValidator","minAge","maxAge","PhoneNumberValidator","PremiseIdValidator","PostalCodeValidator","internationalRegion","PasswordValidator","GridAreaIdValidator","StreetNameValidator","CareOfAddressValidator","PostalTownValidator","static","isEmptyInputValue","isValidFinnishEmailAddress","emailAddress","isValidSwedishEmailAddress","isValidFinnishBusinessNumber","organizationNumber","isValidSwedishBusinessNumber","isValidFinnishPersonalNumber","isValidAgeRange","personalNumberAge","personalNumber","isValidSwedishPersonalNumber","isValidFinnishPhoneNumber","phoneNumber","isValidSwedishPhoneNumber","isValidSwedishPremiseId","premiseId","useInternationalPostalCode","isValidPostalCode","isValidInternationalPostalCode","isValidFinnishPostalCode","isValidSwedishPostalCode","postalCode","dateFromInput","isValidFinnishWeekday","weekday","isValidSwedishWeekday","min","minDate","startOfDay","isInputType","isEqual","isAfter","max","maxDate","isBefore","isValidPassword","password","isValidGridAreaId","gridAreaId","isValidStreetName","streetName","isValidCareOfAddress","careOfAddress","isValidSwedishFinnishPostalTown","postalTown","production","staticProviders","bootstrapModule","appModule","AppModule","__NgCli_bootstrap_1","enableProdMode","ElementsNext","createElementsClass","anyPass","isEmpty","isNil","isObject","obj","targetValue","sourceValue","isArray","concat","m","character","randomNumber","random","toString","baseUrl","append","allPass","is","all","dirtyDate","requiredArgs","arguments","toDate","setHours","setDate","cleanDate","setFullYear","getFullYear","defaultOptions","_ref","_ref2","_ref3","_options$weekStartsOn","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","getDefaultOptions","weekStartsOn","toInteger","RangeError","day","getDay","diff","getDate","startOfWeek","_options$firstWeekCon","year","firstWeekContainsDate","firstWeekOfNextYear","startOfNextYear","firstWeekOfThisYear","startOfThisYear","getWeekYear","firstWeek","MILLISECONDS_IN_WEEK","startOfWeekYear","dirtyAmount","amount","isNaN","NaN","delta","addDays","getMonth","fourthOfJanuaryOfNextYear","startOfISOWeek","fourthOfJanuaryOfThisYear","getISOWeekYear","fourthOfJanuary","startOfISOWeekYear","dayOfMonth","grouped","phrase","dateUnits","getInputDateUnits","getInputDate","startOfMonth","getInputMonth","startOfYear","getInputYear","week","getInputWeek","isInputDate","isInputMonth","isInputYear","isInputWeek","dirtyWeek","getWeek","setWeek","nextDay","nextMonday","getTimezoneOffset","getYear","getISOWeek","getDateUnits","padStart","isDate","numbers","percentile","sort","pre","cur","lowerIndex","floor","upperIndex","ceil","lowerValue","rangeQualifier","rangeIndexes","_currentValue","currentIndex","lastRangeIndexes","last","rangeQualifierFunction","gte","__","I","NEGATIVE_INFINITY","lte","w","POSITIVE_INFINITY","Ie","ye","end","start","parseFloat","_","char","toUpperCase","descriptor","original","clearTimeout","apply","isMobile","array","size","chunk","monthIndex","lastDayOfMonth","dirtyDateLeft","dirtyDateRight","dateLeft","dateRight","SWEDISH_EMAIL","FINNISH_EMAIL","FINNISH_ORGANIZATION_NUMBER_REGEXP","SWEDISH_ORGANIZATION_NUMBER_REGEXP","FINNISH_PERSONAL_NUMBER_REGEXP","SWEDISH_PERSONAL_NUMBER_REGEXP","FINNISH_PHONE_NUMBER_REGEXP","SWEDISH_PHONE_NUMBER_REGEXP","SWEDISH_PREMISE_ID_REGEXP","FINNISH_POSTAL_CODE_REGEXP","SWEDISH_POSTAL_CODE_REGEXP","INTERNATIONAL_POSTAL_CODE_REGEXP","PASSWORD_BR_16","STREET_NAME_INVOICE_REGEXP","CARE_OF_ADDRESS_REGEX","SWEDISH_FINNISH_POSTAL_TOWN_REGEXP","hasValidDomainExtension","toLower","hasValidSwedishChecksum","identificationNumber","doubleEvenNumbers","addIndex","digit","sumDoubleDigitNumbers","takeLast","sum","swedishEmailAddress","finnishEmailAddress","swedishPersonalNumber","swedishBusinessNumber","finnishPersonalNumber","calculationBase","controlCharacter","splitAt","modulo","checkSum","equals","charAt","hasValidFinnishPersonalChecksum","isValidAge","both","take","splitEvery","datePart","validDay","baseYear","fullYear","isValidDays","getDaysInMonth","generateDateFromDatePart","birthDate","sign","compareAsc","difference","differenceInCalendarYears","isLastYearNotFull","result","differenceInYears","hasValidAgeRange","finnishBusinessNumber","zipWith","multiply","when","gt","subtract","hasValidFinnishBusinessChecksum","swedishPhoneNumber","finnishPhoneNumber","swedishPostalCode","internationalPostalCode","finnishPostalCode","swedishPremiseId","tripleEvenNumbers","hasValidSwedishPremiseChecksum","isWeekend","isPublicHoliday","isSwedishPublicHoliday","dateUnit","publicHolidays","finnishPublicHolidays","publicHoliday","isFinnishPublicHoliday","timestamp","addMilliseconds","MILLISECONDS_IN_HOUR","intervalLeft","intervalRight","leftStartTime","leftEndTime","rightStartTime","rightEndTime","inclusive","utcDate","UTC","getHours","getMinutes","getSeconds","getMilliseconds","setUTCFullYear","startOfDayLeft","startOfDayRight","timestampLeft","getTimezoneOffsetInMilliseconds","timestampRight","MILLISECONDS_IN_DAY","dateLeftStartOfDay","dateRightStartOfDay","_typeof","isValid","calendarDifference","differenceInCalendarDays","weeks","isSameDay","endOfWeek","getUTCDay","setUTCDate","getUTCDate","setUTCHours","getUTCFullYear","startOfUTCISOWeek","getUTCISOWeekYear","startOfUTCISOWeekYear","startOfUTCWeek","getUTCWeekYear","startOfUTCWeekYear","number","targetLength","output","token","signedYear","addLeadingZeros","In","getUTCMonth","getUTCHours","getUTCMinutes","getUTCSeconds","numberOfDigits","milliseconds","getUTCMilliseconds","pow","formatters","G","localize","era","width","y","ordinalNumber","lightFormatters","Y","signedWeekYear","weekYear","R","u","quarter","context","q","M","L","getUTCWeek","isoWeek","getUTCISOWeek","d","D","dayOfYear","setUTCMonth","startOfYearTimestamp","getUTCDayOfYear","E","dayOfWeek","localDayOfWeek","c","i","isoDayOfWeek","dayPeriodEnumValue","dayPeriod","b","hours","g","B","h","H","K","k","s","S","X","_localize","timezoneOffset","_originalDate","formatTimezoneWithOptionalMinutes","formatTimezone","O","formatTimezoneShort","z","T","offset","dirtyDelimiter","absOffset","minutes","delimiter","dateLongFormatter","pattern","formatLong","timeLongFormatter","time","p","dateTimeFormat","matchResult","datePattern","timePattern","dateTime","protectedDayOfYearTokens","protectedWeekYearTokens","indexOf","formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","defaultWidth","formats","buildFormatLongFn","full","long","medium","short","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","dirtyIndex","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","_width","argumentCallback","string","matchPattern","matchPatterns","defaultMatchWidth","matchedString","parsePatterns","defaultParseWidth","findIndex","findKey","valueCallback","rest","object","predicate","formatDistance","count","tokenValue","addSuffix","comparison","formatRelative","_date","_baseDate","_options","dirtyNumber","rem100","buildLocalizeFn","narrow","abbreviated","wide","am","pm","midnight","noon","morning","afternoon","evening","night","parsePattern","parseInt","parseResult","buildMatchFn","any","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","_ref4","_options$locale2","_options$locale2$opti","_ref5","_ref6","_ref7","_options$locale3","_options$locale3$opti","_defaultOptions$local3","_defaultOptions$local4","formatStr","defaultLocale","originalDate","subMilliseconds","formatterOptions","substring","firstCharacter","longFormatter","longFormatters","cleanEscapedString","formatter","useAdditionalWeekYearTokens","isProtectedWeekYearToken","throwProtectedError","useAdditionalDayOfYearTokens","isProtectedDayOfYearToken","matched","_options$format","_options$representati","representation","tzOffset","dateDelimiter","timeDelimiter","absoluteOffset","hourOffset","minuteOffset","hour","minute","second","separator","dirtyUnixTime","unixTime","dirtyDateToCompare","dateToCompare","interval","startTime","endTime","dirtyInterval","_options$step","startDate","endDate","dates","currentDate","step","Zi","ml","n","done","f","property","writable","configurable","v","cn","zt","Ue","ou","ys","iu","vs","Qi","enumerable","Setter","_classCallCheck","_defineProperty","_createClass","_utcDate","ValueSetter","_Setter","_inherits","_super","_createSuper","validateValue","setValue","priority","subPriority","_this","flags","DateToSystemTimezoneSetter","_Setter2","_super2","_this2","_len","_key","_assertThisInitialized","timestampIsSet","convertedDate","Parser","dateString","setter","_value","EraParser","_Parser","numericPatterns","timezonePatterns","parseFnResult","mapFn","parseNumericPattern","RegExp","twoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","YearParser","isTwoDigitYear","mapValue","parseNDigits","normalizedTwoDigitYear","normalizeTwoDigitYear","LocalWeekYearParser","ISOWeekYearParser","_flags","firstWeekOfYear","ExtendedYearParser","QuarterParser","StandAloneQuarterParser","MonthParser","StandAloneMonthParser","LocalWeekParser","setUTCWeek","ISOWeekParser","dirtyISOWeek","setUTCISOWeek","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","DateParser","isLeapYear","isLeapYearIndex","DayOfYearParser","dirtyDay","currentDay","remainder","dayIndex","DayParser","setUTCDay","LocalDayParser","wholeWeekDays","StandAloneLocalDayParser","ISODayParser","setUTCISODay","AMPMParser","dayPeriodEnumToHours","AMPMMidnightParser","DayPeriodParser","Hour1to12Parser","isPM","Hour0to23Parser","Hour0To11Parser","Hour1To24Parser","MinuteParser","setUTCMinutes","SecondParser","setUTCSeconds","FractionOfSecondParser","setUTCMilliseconds","ISOTimezoneWithZParser","parseTimezonePattern","ISOTimezoneParser","TimestampSecondsParser","parseAnyDigitsSigned","TimestampMillisecondsParser","parsers","notWhitespaceRegExp","dirtyDateString","dirtyFormatString","dirtyReferenceDate","formatString","_step","subFnOptions","setters","tokens","usedTokens","_iterator","_createForOfIteratorHelper","_loop","parser","incompatibleTokens","incompatibleToken","usedToken","fullToken","run","It","_ret","uniquePrioritySetters","setterArray","_step2","_iterator2","endOfDay","now","decade","dirtyLeftDate","dirtyRightDate","addMonths","days","addWeeks","applyReducedMotion","videoElement","matchMedia","matches","pause","currentTime","removeAttribute","callback","FinallySubscriber","limitVideoLoopCount","totalLoopCount","fromEvent","debounceTime","FinallyOperator","finalize","rgb","hex","hexCode","substr","blue","numberValues","meanValue","standardDeviation","sqrt","varianceValue","_DOM","adapter","DOCUMENT","NumberFormatStyle","Decimal","Percent","Currency","Scientific","Plural","Zero","One","Two","Few","Many","Other","FormStyle","Format","Standalone","TranslationWidth","Narrow","Abbreviated","Wide","Short","FormatWidth","Medium","Long","Full","NumberSymbol","Group","List","PercentSign","PlusSign","MinusSign","Exponential","SuperscriptingExponent","PerMille","Infinity","TimeSeparator","CurrencyDecimal","CurrencyGroup","getLastDefinedValue","ɵfindLocaleData","ɵLocaleDataIndex","res","getLocalePluralCase","ɵgetLocalePluralCase","ISO8601_DATE_REGEX","NAMED_FORMATS","DATE_FORMATS_SPLIT","ZoneWidth","ShortGMT","Extended","DateType","FullYear","Month","Hours","Minutes","Seconds","FractionalSeconds","Day","TranslationType","DayPeriods","Days","Months","Eras","timezone","val","createDate","parsedNb","tzHour","tzMin","dateSetter","timeSetter","ms","isoStringToDate","getNamedFormat","parts","exec","part","pop","dateTimezoneOffset","timezoneToOffset","reverse","setMinutes","addDateMinutes","convertTimezoneToLocal","text","dateFormatter","DATE_FORMATS","dateStrGetter","dateGetter","weekNumberingYearGetter","weekGetter","timeZoneGetter","getDateFormatter","newDate","localeId","getLocaleId","formatValue","getLocaleDateFormat","getLocaleTimeFormat","shortTime","shortDate","formatDateTime","getLocaleDateTimeFormat","mediumTime","mediumDate","longTime","longDate","fullTime","fullDate","str","opt_values","num","digits","minusSign","negWrap","neg","strNum","getDatePart","strMs","formatFractionalSeconds","localeMinus","getLocaleNumberSymbol","padNumber","form","extended","formStyle","months","getLocaleMonthNames","getLocaleDayNames","currentHours","currentMinutes","rules","checkFullData","rule","extractTime","getLocaleExtraDayPeriodRules","dayPeriods","getLocaleExtraDayPeriods","to","afterFrom","beforeTo","amPm","getLocaleDayPeriods","getLocaleEraNames","unexpected","getDateTranslation","zone","datetime","monthBased","nbDaysBefore1stDayOfMonth","thisThurs","getThursdayThisWeek","firstThurs","firstDayOfYear","THURSDAY","getFirstThursdayOfYear","fallback","requestedTimezoneOffset","valueOf","NUMBER_FORMAT_REGEXP","groupSymbol","decimalSymbol","isPercent","formattedText","isZero","isFinite","parsedNumber","integerLen","zeros","numStr","exponent","search","splice","MAX_DIGITS","parseNumber","fractionLen","toPercent","minInt","minFraction","minFrac","maxFraction","maxFrac","minIntPart","minFractionPart","maxFractionPart","parseIntAutoRadix","fractionSize","roundAt","unshift","dropTrailingZeros","minLen","carry","reduceRight","roundNumber","decimals","every","groups","lgSize","gSize","negPre","negSuf","posPre","posSuf","patternParts","positive","negative","positiveParts","lastIndexOf","integer","fraction","ch","_e","trunkLen","pos","NgLocaleLocalization","NgLocalization","getPluralCategory","ɵfac","ɵngcc0","ɵprov","extraData","ɵregisterLocaleData","cookieStr","encodeURIComponent","cookie","eqIndex","cookieName","cookieValue","decodeURIComponent","NgClass","_iterableDiffers","_keyValueDiffers","_ngEl","_renderer","_iterableDiffer","_keyValueDiffer","_initialClasses","_rawClass","klass","_removeClasses","_applyClasses","ngClass","ɵisListLikeIterable","ngDoCheck","iterableChanges","_applyIterableChanges","keyValueChanges","_applyKeyValueChanges","forEachAddedItem","record","_toggleClass","forEachChangedItem","forEachRemovedItem","previousValue","ɵstringify","rawClassVal","addClass","removeClass","ɵdir","inputs","$implicit","ngForOf","first","even","odd","NgForOf","_viewContainer","_template","_differs","_ngForOf","_ngForOfDirty","_differ","ngForTrackBy","_trackByFn","ngForTemplate","getTypeName","_applyChanges","insertTuples","forEachOperation","adjustedPreviousIndex","previousIndex","view","createEmbeddedView","NgForOfContext","tuple","RecordViewTuple","move","_perViewChange","ilen","viewRef","forEachIdentityChange","dir","NgIf","templateRef","_context","NgIfContext","_thenTemplateRef","_elseTemplateRef","_thenViewRef","_elseViewRef","ngIf","condition","_updateView","ngIfThen","assertTemplate","ngIfElse","clear","_viewContainerRef","_templateRef","_created","destroy","enforceState","created","NgSwitch","_defaultUsed","_caseCount","_lastCaseCheckIndex","_lastCasesMatched","ngSwitch","newValue","_ngSwitch","_updateDefaultCases","_addCase","_addDefault","_defaultViews","_matchCase","useDefault","NgSwitchCase","viewContainer","_view","SwitchView","ngSwitchCase","NgSwitchDefault","NgTemplateOutlet","_viewRef","ngTemplateOutletContext","ngTemplateOutlet","viewContainerRef","unicodeWordMatch","TitleCasePipe","invalidPipeArgumentError","txt","ɵpipe","formatDate","JsonPipe","KeyValuePipe","differs","keyValues","compareFn","defaultComparator","differ","differChanges","compareFnChanged","forEachItem","r","makeKeyValuePair","keyValueA","keyValueB","aString","bString","_locale","isValue","formatNumberToLocaleString","parseNumberFormat","getLocaleNumberFormat","formatNumber","strToNumber","PercentPipe","formatPercent","SlicePipe","supports","ɵmod","ɵinj","PLATFORM_BROWSER_ID","platformId","PLATFORM_SERVER_ID","normalizedNames","lazyUpdate","lazyInit","line","maybeSetNormalizedName","getAll","op","lcName","HttpHeaders","copyFrom","update","applyUpdate","base","toDelete","existing","He","encodeKey","standardEncoding","encodeValue","decodeKey","decodeValue","STANDARD_ENCODING_REGEX","STANDARD_ENCODING_REPLACEMENTS","updates","cloneFrom","encoder","HttpUrlEncodingCodec","fromString","fromObject","rawParams","codec","param","eqIdx","list","paramParser","appendAll","eKey","HttpParams","valueToString","idx","Fe","defaultValue","ArrayBuffer","FormData","third","fourth","reportProgress","responseType","Ge","HttpContext","qIdx","serializeBody","isArrayBuffer","isBlob","isFormData","detectContentTypeHeader","setHeaders","setParams","HttpRequest","HttpEventType","Sent","UploadProgress","ResponseHeader","DownloadProgress","Response","User","defaultStatus","defaultStatusText","statusText","ok","HttpResponseBase","HttpHeaderResponse","HttpClient","handler","req","events$","project","resultSelector","mergeMap","concatMap","res$","head","jsonp","callbackParam","patch","addBody","post","put","HttpHandler","interceptor","NoopInterceptor","XSSI_PREFIX","HttpXhrBackend","xhrFactory","xhr","build","open","setRequestHeader","detectedType","reqBody","headerResponse","partialFromXhr","getAllResponseHeaders","responseURL","getResponseHeader","getResponseUrl","onLoad","response","responseText","originalBody","sentHeaders","onDownProgress","progressEvent","loaded","lengthComputable","total","partialText","onUpProgress","progress","upload","removeEventListener","DONE","abort","ɵngcc1","XSRF_COOKIE_NAME","XSRF_HEADER_NAME","HttpXsrfCookieExtractor","doc","platform","lastCookieString","lastToken","parseCount","getToken","cookieString","ɵparseCookieValue","PLATFORM_ID","HttpXsrfInterceptor","tokenService","headerName","lcUrl","HttpXsrfTokenExtractor","HttpInterceptingHandler","backend","chain","interceptors","HttpInterceptorHandler","HttpBackend","HttpClientXsrfModule","HttpClientModule","withOptions","XhrFactory$1","objWithPropertyToExtract","getClosureSafeProperty","overriddenName","newLineIndex","before","after","__forward_ref__","forwardRefFn","forwardRef","isForwardRef","formatRuntimeError","renderStringify","injectorName","injectorDetails","RuntimeError","stringifyForError","actual","msg","expected","opts","providedIn","defineInjectable","ɵɵdefineInjectable","getOwnDefinition","NG_PROV_DEF","NG_INJECTABLE_DEF","field","NG_INJ_DEF","NG_INJECTOR_DEF","ngInjectableDef","ngInjectorDef","InjectFlags","Default","Host","Self","SkipSelf","Optional","_injectImplementation","impl","previous","notFoundValue","injectableDef","getInjectableDef","throwProviderNotFoundError","ChangeDetectionStrategy","OnPush","ViewEncapsulation","Emulated","None","ShadowDom","__globalThis","globalThis","__window","__self","WorkerGlobalScope","_global","global","EMPTY_OBJ","EMPTY_ARRAY","NG_COMP_DEF","ɵcmp","NG_DIR_DEF","NG_PIPE_DEF","NG_MOD_DEF","NG_LOC_ID_DEF","ɵloc","NG_FACTORY_DEF","NG_ELEMENT_ID","__NG_ELEMENT_ID__","_renderCompCount","componentDefinition","noSideEffects","declaredInputs","def","providersResolver","decls","vars","template","consts","ngContentSelectors","hostBindings","hostVars","hostAttrs","contentQueries","outputs","exportAs","onPush","changeDetection","directiveDefs","pipeDefs","viewQuery","encapsulation","styles","setInput","schemas","tView","directiveTypes","directives","feature","pipeTypes","pipes","invertObject","extractDirectiveDef","extractPipeDef","getComponentDef","getDirectiveDef","getPipeDef","autoRegisterModuleById","declarations","exports","transitiveCompileScopes","scope","ngModuleDef","getNgModuleDef","secondary","newLookup","minifiedKey","publicName","declaredName","ɵɵdefineDirective","ɵɵdefineComponent","pipeDef","throwNotFound","tNode","firstChange","isFirstChange","NgOnChangesFeatureImpl","definition","ngOnChangesSetInput","rememberChangeHistoryAndInvokeOnChangesHook","simpleChangesStore","getSimpleChangesStore","current","privateName","SIMPLE_CHANGES_STORE","setSimpleChangesStore","previousChange","SimpleChange","ɵɵNgOnChangesFeature","ngInherit","renderer","listen","domRendererFactory3","createRenderer","hostElement","rendererType","getDocument","lView","unwrapRNode","nodeIndex","hostView","slotValue","isLView","HOST","lContainer","viewOrContainer","parent","PARENT","instructionState","lFrame","createLFrame","bindingsEnabled","isInCheckNoChangesMode","viewToRestore","contextLView","CONTEXT","currentTNode","getCurrentTNodePlaceholderOk","isParent","mode","bindingRootIndex","bindingStartIndex","bindingIndex","currentDirectiveIndex","setCurrentDirectiveIndex","currentQueryIndex","declTNode","parentTNode","parentLView","getDeclarationTNode","allocLFrame","newView","newLFrame","firstChild","inI18n","currentLFrame","childLFrame","child","selectedIndex","elementDepthCount","currentNamespace","oldLFrame","leaveDI","leaveViewLight","getTNode","directiveStart","directiveEnd","lifecycleHooks","directiveDef","ngAfterContentInit","ngAfterContentChecked","ngAfterViewInit","ngAfterViewChecked","contentHooks","contentCheckHooks","viewHooks","viewCheckHooks","destroyHooks","hooks","callHooks","initPhase","currentView","arr","currentNodeIndex","nodeIndexLimit","lastNodeIndexFound","callHook","isInitHook","hook","directive","isViewProvider","injectImplementation","resolving","canSeeViewProviders","injectImpl","native","attrs","isProc","isProceduralRenderer","namespaceURI","attrName","attrVal","setAttribute","setAttributeNS","isAnimationProp","setProperty","marker","charCodeAt","dst","src","srcMarker","mergeHostAttribute","key1","key2","markerInsertPosition","dstValue","parentLocation","NO_PARENT_INJECTOR","location","startView","viewOffset","getParentInjectorViewOffset","parentView","includeViewProviders","oldValue","nextNgElementId","existingInjectorIndex","getInjectorIndex","firstCreatePass","injectorIndex","insertBloom","blueprint","parentLoc","getParentInjectorLocation","hasParentInjector","parentIndex","getParentInjectorIndex","getParentInjectorView","parentData","footer","declarationViewOffset","lViewCursor","tViewType","bloomHash","mask","bloomAdd","moduleInjector","previousInjectImplementation","setInjectImplementation","injectRootLimpMode","notFoundValueOrThrow","tokenId","createNodeInjector","bloomHashBitOrFactory","enterDI","lookupTokenUsingModuleInjector","previousTView","hostTElementNode","shouldSearchParent","bloomHasToken","searchTokensOnInjector","NOT_FOUND","NodeInjector","getCurrentTNode","getLView","currentTView","injectableIdx","locateDirectiveOrProvider","isComponentHost","getNodeInjectable","canAccessViewProviders","isHostSpecialCase","nodeProviderIndexes","providerIndexes","tInjectables","injectablesStart","directivesStart","cptViewProvidersCount","endIndex","providerTokenOrDef","dirDef","isComponentDef","tData","NodeInjectorFactory","isFactory","depPath","throwCyclicDependencyError","previousIncludeViewProviders","setIncludeViewProviders","directiveIndex","ngOnInit","wrappedOnChanges","preOrderHooks","preOrderCheckHooks","registerPreOrderHooks","injectorView","isFirstHostTNode","_tNode","_lView","getOrCreateInjectable","ownConstructor","ownFactory","getFactoryOf","objectPrototype","getPrototypeOf","resolveForwardRef","getFactoryDef","attrNameToInject","classes","attrsLength","isNameOnlyAttributeMarker","injectAttributeImpl","PARAMETERS","props","parentClass","metaCtor","propName","makeMetadataCtor","ParamDecoratorFactory","annotationInstance","ParamDecorator","annotation","cls","unusedKey","ngMetadataName","annotationCls","_desc","flatten","deepForEach","keyValueArray","keyValueArrayIndexOf","value1","value2","arrayInsert2","shift","middle","_arrayIndexOfSorted","THROW_IF_NOT_FOUND","DI_DECORATOR_FLAG","NG_TEMP_TOKEN_PATH","NEW_LINE","SOURCE","USE_VALUE","_currentInjector","former","injectInjectorOnly","inject","ɵɵinject","types","arg","meta","flag","getInjectFlag","decorator","injectorErrorName","tokenPath","formatError","NG_TOKEN_PATH","Inject","attachInjectFlag","makeParamDecorator","RendererStyleFlags2","Important","DashCase","componentInstance","readPatchedData","componentIndices","components","elementComponentIndex","componentView","getComponentLViewByIndex","findViaComponent","localRefs","createLContext","attachPatchData","MONKEY_PATCH_KEY_NAME","tIcuContainerNode","_icuContainerIterate","isLContainer","getNearestLContainer","CHILD_HEAD","container","NEXT","lNodeToHandle","beforeNode","isComponent","rNode","o","nativeAppendChild","nativeInsertBefore","isHostElement","nativeParent","nativeParentNode","removeChild","nativeRemoveChild","nativeRemoveNode","destroyNode","parentRElement","anchor","applyToElementOrContainer","applyView","applyContainer","namespace","createElementNS","declarationContainer","movedViews","declarationViewIndex","insertionLContainer","updateTransplantedViewCount","removeIndex","indexInContainer","viewToDetach","declarationLContainer","detachMovedView","removedLView","removeFromArray","removeViewFromContainer","lQueries","detachView","rootView","lViewOrLContainer","cleanUpView","firstView","destroyViewTree","toCall","callContext","executeOnDestroys","tCleanup","cleanup","lCleanup","lastLCleanupIndex","idxOrTargetGetter","listener","useCaptureOrSubIdx","processCleanups","getNativeByTNode","getClosestRElement","isMove","insertBefore","appendChild","node","parentNode","_getInsertInFrontOfRNodeWithI18n","policy","policy$1","childRNode","childTNode","parentRNode","getParentRElement","anchorNode","getInsertInFrontOfRNode","nativeAppendOrInsertBefore","tNodeType","getBeforeNodeForView","elIcuContainerChild","getFirstNativeNode","rNodeOrLContainer","nextRNode","projectionNodes","getProjectionNodes","getLViewParent","projection","viewIndexInContainer","nextViewIndex","firstTNodeOfView","NATIVE","isProjection","rawSlotValue","applyNodes","icuContainerIterate","applyProjectionRecursive","projectionNext","tProjectionNode","componentLView","nodeToProjectOrRNodes","componentNode","style","cssText","className","html","trustedTypes","createPolicy","createHTML","createScript","createScriptURL","getPolicy","getPolicy$1","changingThisBreaksApplicationSecurity","SafeValueImpl","actualType","getSanitizationBypassType","trustedHtml","SafeHtmlImpl","trustedStyle","SafeStyleImpl","trustedScript","SafeScriptImpl","trustedUrl","SafeUrlImpl","trustedResourceUrl","SafeResourceUrlImpl","inertDocumentHelper","getInertBodyElement","DOMParser","parseFromString","trustedHTMLFromString","defaultDoc","inertDocument","implementation","createHTMLDocument","inertHtml","inertBodyElement","templateEl","inertBody","documentMode","stripCustomNsAttrs","el","elAttrs","attributes","childNode","nodeType","Node","ELEMENT_NODE","nextSibling","SAFE_URL_PATTERN","DATA_URL_PATTERN","tags","sets","VOID_ELEMENTS","tagSet","OPTIONAL_END_TAG_BLOCK_ELEMENTS","OPTIONAL_END_TAG_INLINE_ELEMENTS","VALID_ELEMENTS","merge","URI_ATTRS","SRCSET_ATTRS","VALID_ATTRS","SKIP_TRAVERSING_CONTENT_IF_INVALID_ELEMENTS","sanitizedSomething","buf","sanitizeChildren","traverseContent","startElement","TEXT_NODE","chars","nodeValue","endElement","checkClobberedElement","nodeName","elAttr","lower","_sanitizeUrl","srcset","encodeEntities","nextNode","compareDocumentPosition","DOCUMENT_POSITION_CONTAINED_BY","outerHTML","SURROGATE_PAIR_REGEXP","NON_ALPHANUMERIC_REGEXP","inertBodyHelper","unsafeHtmlInput","InertDocumentHelper","isDOMParserAvailable","DOMParserHelper","getInertBodyHelper","unsafeHtml","mXSSAttempts","parsedHtml","sanitizer","SanitizingHtmlSerializer","getTemplateContent","safeHtml","isTemplateElement","SecurityContext","NONE","HTML","STYLE","SCRIPT","RESOURCE_URL","getSanitizer","trustedHTMLFromStringBypass","sanitize","allowSanitizationBypassAndThrow","unwrapSafeValue","_sanitizeHtml","unsafeUrl","SANITIZER","ERROR_ORIGINAL_ERROR","_console","handleError","originalError","_findOriginalError","_findContext","errorLogger","ERROR_LOGGER","defaultErrorLogger","ERROR_DEBUG_CONTEXT","getOriginalError","defaultScheduler","requestAnimationFrame","bind","ownerDocument","defaultView","Function","classToSearch","startingIndex","foundIndex","NG_TEMPLATE_SELECTOR","cssClassToMatch","isProjectionMode","classIndexOf","currentSelector","tagNameToCompare","nodeAttrs","nameOnlyMarkerIdx","getNameOnlyMarkerIndex","skipToNextSelector","hasTagAndTypeMatch","isPositive","selectorAttrValue","isCssClassMatching","attrIndexInNode","findAttrIndexInNode","isInlineTemplate","nodeAttrValue","compareAgainstClassName","bindingsMode","maybeAttrName","attr","matchTemplateAttribute","isNodeMatchingSelector","selectorListLoop","currentSelectorInList","isNegativeMode","currentChunk","valueOrMarker","attrValue","maybeWrapInNotSelector","NO_CHANGE","selectIndexInternal","getTView","getSelectedIndex","checkNoChangesMode","executeCheckHooks","executeInitAndCheckHooks","setSelectedIndex","prev","tStylingRange","_CLEAN_PROMISE","Promise","resolve","queryStartIdx","directiveDefIdx","setCurrentQueryIndex","tHostNode","rendererFactory","resetPreOrderHookFlags","isCurrentTNodeParent","tParent","insertBeforeIndex","directiveStylingLast","propertyBindings","mergedAttrs","localNames","initialInputs","tViews","stylesWithoutHost","residualStyles","classesWithoutHost","residualClasses","classBindings","styleBindings","createTNode","createTNodeAtIndex","getCurrentParentTNode","setCurrentTNode","numSlotsToAlloc","initialValue","allocIdx","enterView","executeViewQueryFn","templateFn","executeTemplate","staticContentQueries","refreshContentQueries","staticViewQueries","hostLView","renderComponent","renderChildComponents","leaveView","incompleteFirstPass","isInCheckNoChangesPass","setBindingIndex","hooksInitPhaseCompleted","incrementInitPhaseFlags","getFirstLContainer","getNextLContainer","movedLView","markTransplantedViewsForRefresh","embeddedLView","embeddedTView","viewAttachedToChangeDetector","refreshView","refreshEmbeddedViews","hostBindingOpCodes","opCode","directiveIdx","bindingRootIndx","hostBindingFn","setBindingRootForHostBindings","processHostBindingOpCodes","refreshComponent","refreshChildComponents","firstUpdatePass","normalExecutionPath","creationModeIsActive","isCreationMode","begin","renderView","rf","prevSelectedIndex","isUpdatePhase","isContentQueryHost","getBindingsEnabled","getOrCreateNodeInjectorForNode","addComponentLogic","setInputsFromAttrs","instantiateAllDirectives","elementIndex","dirIndex","invokeHostBindingsInCreationMode","invokeDirectivesHostBindings","viewData","localRefExtractor","localIndex","createTView","constsOrFactory","initialViewLength","createViewBlueprint","queries","fill","expandoStartIndex","directiveRegistry","pipeRegistry","cleanupFn","getOrCreateLViewCleanup","getOrCreateTViewCleanup","inputAliasMap","propStore","internalName","nativeOnly","dataValue","inputData","setInputsForProperty","viewIndex","childComponentLView","markDirtyIfOnPush","mapPropName","hasDirectives","registry","isNodeMatchingSelectorList","diPublicInInjector","markAsComponentHost","findDirectiveDefMatches","exportsMap","initTNodeFlags","preOrderHooksFound","preOrderCheckHooksFound","allocExpando","mergeHostAttrs","configureViewWithDirective","saveNameToExportMap","lifeCycleHooks","tViewData","tNodeAttrs","inputsFromAttrs","inputsStore","outputsStore","directiveInputs","generateInitialInputs","generatePropertyAliases","initializeInputAndOutputAliases","cacheMatchingLocalNames","directiveVarsIdx","elementIndx","lastSelectedElementIdx","hostTNode","numberOfDirectives","directiveFactory","nodeInjectorFactory","registerHostBindingOpCodes","getOrCreateTComponentView","addToViewTree","createLView","strValue","setElementAttribute","initialInputData","inputsToStore","hostNative","componentHostIdx","refreshContainsDirtyView","componentTView","syncViewWithBlueprint","isRootView","rootContext","rootComponent","readPatchedLView","renderComponentOrTemplate","tickRootContext","viewQueryFn","CLEAN_PROMISE","errorHandler","ErrorHandler","getNativeByIndex","updateTextNode","writeToHost","concatStringsWithSpace","clean","scheduler","playerHandler","flushPlayers","scheduleTick","markViewDirty","getComponentViewByInstance","INJECTOR$1","INJECTOR_SCOPE","NOT_YET","CIRCULAR","NULL_INJECTOR","NullInjector","defType","additionalProviders","R3Injector","getNullInjector","records","injectorDefTypes","_destroyed","dedupStack","provider","processProvider","injectorDef","processInjectorType","makeRecord","destroyed","assertNotDestroyed","service","previousInjector","setCurrentInjector","injectableDefInScope","injectableDefOrInjectorDefFactory","hydrate","catchInjectorError","_resolveInjectorDefTypes","defOrWrappedDef","parents","getInjectorDef","isDuplicate","importTypesWithProviders","imported","defProviders","injectorType","ngModuleType","isTypeProvider","isValueProvider","providerToFactory","multiRecord","injectArgs","paramLength","newArray","inheritedInjectableDef","typeName","getInheritedInjectableDef","getUndecoratedInjectableFactory","unwrappedProvider","useFactory","isFactoryProvider","deps","isExistingProvider","classRef","hasDeps","INJECTOR_IMPL","createInjectorWithoutInjectorInstances","createInjector","Injector","NULL","registerPostOrderHooks","superType","getSuperType","shouldInheritFields","inheritanceChain","superDef","writeableDef","maybeUnwrapEmpty","superHostBindings","inheritHostBindings","superViewQuery","superContentQueries","inheritViewQuery","inheritContentQueries","fillProperties","animation","defData","ɵɵInheritDefinitionFeature","mergeHostAttrsAcrossInheritance","prevViewQuery","prevContentQueries","prevHostBindings","_symbolIterator","iterator","getOwnPropertyNames","wrapped","WrappedValue","isWrapped","isJsObject","getSymbolIterator","exp1","exp2","different","bindingUpdated","exp3","bindingUpdated2","exp4","nextBindingIndex","elementAttributeInternal","getSelectedTNode","ɵɵattribute","attrsIndex","localRefsIndex","adjustedIndex","tViewConsts","getOrCreateTNode","getConstant","resolveDirectives","templateFirstCreatePass","comment","createComment","createLContainer","isDirectiveHost","createDirectivesInstances","saveResolvedLocalsInData","load","elementPropertyInternal","ɵɵproperty","isClassBased","createElementNode","computeStaticStyling","elementStart","elementStartFirstCreatePass","setUpAttributes","writeDirectClass","writeDirectStyle","executeContentQueries","setCurrentTNodeAsNotParent","elementEnd","hasClassInput","setDirectiveInputsWhichShadowsStyling","hasStyleInput","ɵɵelementStart","ɵɵelementEnd","elementContainerStartFirstCreatePass","ɵɵelementContainerStart","ɵɵelementContainerEnd","isObservable","isSubscribable","listenerFn","useCapture","eventTargetResolver","listenerInternal","isTNodeDirectiveHost","processOutputs","lCleanupIndex","existingListener","tNodeIdx","cleanupEventName","listenerIdxInLCleanup","findExistingListener","__ngLastListenerFn__","__ngNextListenerFn__","wrapListener","propsLength","directiveInstance","ɵɵlistener","profiler","wrapWithPreventDefault","executeListenerWithErrorHandling","nextListenerFn","wrapListenerIn_markDirtyAndPreventDefault","preventDefault","returnValue","level","nestingLevel","walkUpViews","nextContextImpl","projectionSlots","wildcardNgContentIndex","ngProjectAsAttrVal","ngProjectAsAttrIdx","getProjectAsAttrValue","isSelectorInSelectorList","projectionHeads","tails","componentChild","slotIndex","matchingProjectionSlotIndex","selectorIndex","applyProjection","tStylingKey","isPrevDir","isClassBinding","tStylingAtIndex","isMap","cursor","getTStylingRangePrev","getTStylingRangeNext","foundDuplicate","tStyleRangeAtCursor","isStylingMatch","setTStylingRangeNextDuplicate","setTStylingRangePrevDuplicate","tStylingKeyCursor","parserState","textEnd","keyEnd","valueEnd","startIndex","consumeClassToken","consumeWhitespace","prop","suffix","checkStylingProperty","ɵɵstyleProp","ɵɵclassProp","keyValueArraySet","stringParser","incrementBindingIndex","stylingFirstUpdatePass","hasStylingInputShadow","isInHostBindings","staticPrefix","oldKeyValueArray","newKeyValueArray","oldIndex","newIndex","oldKey","newKey","setKey","U","updateStyling","updateStylingMap","styleKeyValueArray","unwrappedValue","toStylingKeyValueArray","checkStylingMap","classStringParser","resetParserState","parseClassNameNext","parseClassName","getLastParsedKey","normalizeSuffix","isHostBindings","stylingKey","hostDirectiveDef","getCurrentDirectiveDef","residual","collectStylingFromTAttrs","collectStylingFromDirectives","templateStylingKey","bindings","getTemplateHeadTStylingKey","setTemplateHeadTStylingKey","collectResidual","wrapInStaticStylingKey","tStylingKeyWithStatic","isHostBinding","tBindings","tmplHead","tmplTail","isKeyDuplicateOfStatic","staticKeyValueArray","previousNode","toTStylingRange","setTStylingRangeNext","setTStylingRangePrev","markDuplicates","markDuplicateOfResidualStyling","insertTStylingBinding","currentDirective","desiredMarker","currentMarker","tRange","isStylingValuePresent","getTStylingRangeNextDuplicate","findStylingValue","getTStylingRangePrevDuplicate","isProcedural","removeStyle","removeProperty","isImportant","endsWith","setStyle","applyStyling","isPrevDirection","rawKey","containsStatics","isStylingMap","valueAtLViewIndex","keyValueArrayGet","textNative","createText","createTextNode","v0","ɵɵtextInterpolate1","ɵɵtextInterpolate","prefix","interpolation1","textBindingInternal","v1","getBindingIndex","interpolation2","ɵɵtextInterpolate2","i1","v2","bindingUpdated3","interpolation3","ɵɵtextInterpolate3","i2","v3","bindingUpdated4","interpolation4","ɵɵtextInterpolate4","i3","v4","interpolation5","ɵɵtextInterpolate5","ɵɵhostProperty","localeEn","LOCALE_DATA","LocaleDataIndex","LocaleId","ExtraData","normalizedLocale","normalizeLocale","getLocaleData","parentLocale","findLocaleData","PluralCase","ng","common","locales","DayPeriodsFormat","DayPeriodsStandalone","DaysFormat","DaysStandalone","MonthsFormat","MonthsStandalone","FirstDayOfWeek","WeekendRange","DateFormat","TimeFormat","DateTimeFormat","NumberSymbols","NumberFormats","CurrencyCode","CurrencySymbol","CurrencyName","Currencies","Directionality","DEFAULT_LOCALE_ID","assertDefined","lInjectablesBlueprint","resolveProvider$1","providerFactory","beginIndex","ɵɵdirectiveInject","existingFactoryIndex","registerDestroyHooksIfSupported","existingProvidersFactoryIndex","existingViewProvidersFactoryIndex","doesProvidersFactoryExist","doesViewProvidersFactoryExist","factoryFn","componentProviders","multiFactoryAdd","multiFactory","multiViewProvidersFactoryResolver","multiProvidersFactoryResolver","contextIndex","indexInFactory","providerIsTypeProvider","isClassProvider","existingCallbacksIndex","isComponentProvider","lData","multiResolve","factories","componentCount","multiProviders","viewProviders","processProvidersFn","ERROR_COMPONENT","noComponentFactoryError","ComponentFactoryResolver","_NullComponentFactoryResolver","ElementRef","SWITCH_ELEMENT_REF_FACTORY","createElementRef","Renderer2","SWITCH_RENDERER2_FACTORY","nodeAtIndex","RENDERER","getOrCreateRenderer2","Sanitizer","major","minor","VERSION","Version","isListLikeIterable","trackByFn","DefaultIterableDiffer","trackByIdentity","_linkedRecords","_unlinkedRecords","_previousItHead","_itHead","_itTail","_additionsHead","_additionsTail","_movesHead","_movesTail","_removalsHead","_removalsTail","_identityChangesHead","_identityChangesTail","_next","nextIt","nextRemove","addRemoveOffset","moveOffsets","getPreviousIndex","adjPreviousIndex","_nextRemoved","localMovePreviousIndex","localCurrentIndex","forEachPreviousItem","_nextPrevious","_nextAdded","forEachMovedItem","_nextMoved","_nextIdentityChange","collection","check","_reset","itemTrackBy","mayBeDirty","trackById","_verifyReinsertion","_addIdentityChange","_mismatch","iterateListLike","_truncate","isDirty","previousRecord","_prev","_remove","_reinsertAfter","_moveAfter","_addAfter","IterableChangeRecord_","reinsertRecord","_addToMoves","nextRecord","_addToRemovals","_unlink","prevRecord","_prevRemoved","_insertAfter","_DuplicateMap","toIndex","_prevDup","_nextDup","_head","_tail","atOrAfterIndex","duplicates","_DuplicateItemRecordList","recordList","moveOffset","DefaultKeyValueDiffer","_records","_mapHead","_appendAfter","_previousMapHead","_changesHead","_changesTail","_nextChanged","_forEach","_maybeAddToChanges","_getOrCreateRecordForKey","_insertBeforeOrAppend","KeyValueChangeRecord_","_addToAdditions","_addToChanges","IterableDiffers","DefaultIterableDifferFactory","copied","defaultIterableDiffersFactory","iterable","getTypeNameForDebugging","KeyValueDiffers","DefaultKeyValueDifferFactory","defaultKeyValueDiffersFactory","kv","lNode","lViewInAContainer","lViewFirstChildTNode","collectNativeNodes","nodesInSlot","_cdRefInjectingView","_appRef","_attachedToViewContainer","rootNodes","viewRefs","destroyLView","storeCleanupWithContext","markForCheck","detach","reattach","detectChanges","detectChangesInternal","checkNoChanges","setIsInCheckNoChangesMode","checkNoChangesInternal","attachToViewContainerRef","detachFromAppRef","attachToAppRef","appRef","ViewRef","detectChangesInRootView","checkNoChangesInRootView","SWITCH_CHANGE_DETECTOR_REF_FACTORY","isPipe","createViewRef","ChangeDetectorRef","keyValDiff","defaultIterableDiffers","defaultKeyValueDiffers","SWITCH_TEMPLATE_REF_FACTORY","createTemplateRef","TemplateRef","ViewEngineTemplateRef","R3TemplateRef","_declarationLView","_declarationTContainer","elementRef","declarationViewLQueries","SWITCH_VIEW_CONTAINER_REF_FACTORY","createContainerRef","ViewContainerRef","VE_ViewContainerRef","R3ViewContainerRef","_lContainer","_hostTNode","_hostLView","parentInjector","getViewRefs","CONTAINER_HEADER_OFFSET","insert","createComponent","componentFactory","projectableNodes","ngModuleRef","contextInjector","NgModuleRef","componentRef","prevIdx","prevLContainer","prevVCRef","adjustedIdx","_adjustIndex","containerLength","addToArray","declaredComponentLView","insertedLContainer","trackMovedView","insertView","parentNativeNode","addViewToContainer","getOrCreateViewRefs","viewRefsArr","detachedView","VIEW_REFS","commentNode","nativeNextSibling","NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR","componentDef","ComponentFactory$1","nonMinified","templateName","SCHEDULER","ComponentFactory","componentType","stringifyCSSSelector","isBoundToModule","toRefArray","rootSelectorOrNode","rootViewInjector","createChainedInjector","RendererFactory2","hostRenderer","elementName","hostRNode","elementOrSelector","selectRootElement","rElement","locateHostElement","getNamespace$1","rootFlags","createRootContext","rootTView","rootLView","tElementNode","viewRenderer","createRootComponentView","extractAttrsAndClassesFromSelector","nodesforSlot","hostFeatures","rootTNode","instantiateRootComponent","createRootComponent","LifecycleHooksFeature","ComponentRef$1","_rootLView","changeDetectorRef","RootViewRef","modules","_parent","destroyCbs","ComponentFactoryResolver$1","ngLocaleIdDef","setLocaleId","maybeUnwrapFn","_r3Injector","injectFlags","moduleType","visited","incoming","assertSameOrNotExisting","recurse","registerNgModuleType","NgModuleRef$1","slotOffset","pureFn","thisArg","getBindingRoot","updateBinding","getBinding","exp","pureFunction1Internal","pureFunction2Internal","exp5","returnValueIndex","lastReturnValue","bindingRoot","getPureFunctionReturnValue","pipeName","getPipeDef$1","pipeFactory","pipeInstance","unwrapValue$1","isPure","pureFunction3Internal","unwrap","EventEmitter","isAsync","__isAsync","emit","observerOrNext","nextFn","errorFn","completeFn","_wrapInTimeout","sink","_results","_emitDistinctChangesOnly","dirty","_changesDetected","_changes","proto","QueryList","symbolIterator","toArray","reset","resultsTree","identityAccessor","newResultFlat","valueA","valueB","arrayEquals","notifyOnChanges","setDirty","queryList","LQuery_","tQueries","noOfInheritedQueries","viewLQueries","tQuery","getByIndex","indexInDeclarationView","LQueries_","dirtyQueriesWithMatches","getTQuery","read","queriesForTemplateRef","childQueryIndex","tqueryClone","TQueries_","track","tquery","metadata","crossesNgTemplate","_appliesToNextNode","_declarationNodeIndex","isApplyingToNode","matchTNode","addMatch","TQuery_","declarationNodeIdx","matchTNodeWithReadOption","getIdxOfMatchingSelector","nodeMatchIdx","directiveOrProviderIdx","matchIdx","matchingIdx","createResultByTNodeType","createSpecialToken","queryIndex","lQuery","tQueryMatches","matchedNodeIdx","createResultForNode","lViewResults","materializeViewResults","collectQueryResults","embeddedLViews","getCurrentQueryIndex","unwrapElementRef","createTQuery","TQueryMetadata_","createLQuery","tViewContentQueries","saveContentQueryAndDirectiveIndex","APP_INITIALIZER","ApplicationInitStatus","appInits","noop","reject","donePromise","rej","runInitializers","asyncInitPromises","initResult","isPromise","observableAsPromise","APP_ID","APP_ID_RANDOM_PROVIDER","_randomChar","fromCharCode","PLATFORM_INITIALIZER","APP_BOOTSTRAP_LISTENER","Console","log","LOCALE_ID$1","DEFAULT_CURRENCY_CODE","ivyEnabled","ngModuleFactory","componentFactories","Compiler_compileModuleSync__POST_R3__","NgModuleFactory$1","Compiler_compileModuleSync","Compiler_compileModuleAsync","Compiler_compileModuleAndAllComponentsSync__POST_R3__","declaration","ModuleWithComponentFactories","Compiler_compileModuleAndAllComponentsSync","Compiler_compileModuleAndAllComponentsAsync","Compiler","compileModuleSync","compileModuleAndAllComponentsSync","compileModuleAndAllComponentsAsync","clearCache","clearCacheFor","getModuleId","promise","Zone","scheduleMicroTask","enableLongStackTrace","shouldCoalesceEventChangeDetection","shouldCoalesceRunChangeDetection","hasPendingMacrotasks","hasPendingMicrotasks","isStable","onUnstable","onMicrotaskEmpty","onStable","assertZonePatched","_nesting","_outer","_inner","TaskTrackingZoneSpec","fork","longStackTraceZoneSpec","lastRequestAnimationFrameId","nativeRequestAnimationFrame","nativeCancelAnimationFrame","cancelAnimationFrame","unpatchedRequestAnimationFrame","__symbol__","unpatchedCancelAnimationFrame","getNativeRequestAnimationFrame","delayChangeDetectionForEventsDelegate","isCheckStableRunning","fakeTopEventTask","root","scheduleEventTask","updateMicroTaskStatus","checkStable","invoke","delayChangeDetectionForEvents","properties","isAngularZone","onInvokeTask","delegate","task","applyThis","applyArgs","onEnter","invokeTask","onLeave","onInvoke","onHasTask","hasTaskState","hasTask","change","_hasPendingMicrotasks","microTask","macroTask","onHandleError","runOutsideAngular","forkInnerZoneWithAngularBehavior","NgZone","isInAngularZone","runTask","EMPTY_PAYLOAD","cancelTask","runGuarded","Testability","_ngZone","_pendingCount","_isZoneStable","_didWork","_callbacks","taskTrackingZone","_watchAngularEvents","assertNotInAngularZone","_runCallbacksIfReady","increasePendingRequestCount","decreasePendingRequestCount","cb","timeoutId","doneCb","pending","getPendingTasks","updateCb","macroTasks","creationLocation","addCallback","timeout","whenStable","getPendingRequestCount","findProviders","using","exactMatch","TestabilityRegistry","_applications","_testabilityGetter","addToWindow","registerApplication","testability","unregisterApplication","unregisterAllApplications","getTestability","elem","getAllTestabilities","getAllRootElements","findTestabilityInTree","findInAncestors","getter","_NoopGetTestability","_devMode","_runModeLocked","_platform","ALLOW_MULTIPLE_PLATFORMS","parentPlatformFactory","desc","extraProviders","getPlatform","injectedProviders","PlatformRef","inits","createPlatform","requiredToken","assertPlatform","_injector","_modules","_destroyListeners","bootstrapModuleFactory","moduleFactory","ngZone","ngZoneOption","extra","NoopNgZone","ngZoneEventCoalescing","ngZoneRunCoalescing","getNgZone","ngZoneInjector","moduleRef","exceptionHandler","_callAndReportToErrorHandler","initStatus","_moduleDoBootstrap","compilerOptions","optionsReducer","compileNgModuleFactory","ApplicationRef","ngDoBootstrap","objs","_zone","_exceptionHandler","_componentFactoryResolver","_initStatus","_bootstrapListeners","_views","_runningTick","_stable","componentTypes","_onMicrotaskEmptySubscription","tick","isCurrentlyStable","stableSub","unstableSub","assertInAngularZone","merge$1","share","componentOrFactory","cf","compRef","testabilityRegistry","_loadComponent","attachView","viewCount","getDebugNodeR2","_nativeNode","platformCore","createPlatformFactory","APPLICATION_MODULE_PROVIDERS","$localize","ApplicationModule","ɵɵdefineNgModule","ɵɵdefineInjector","decl","BaseControlValueAccessor","_elementRef","onChange","onTouched","registerOnTouched","registerOnChange","setDisabledState","isDisabled","BuiltInControlValueAccessor","ɵBuiltInControlValueAccessor_BaseFactory","NG_VALUE_ACCESSOR","DEFAULT_VALUE_ACCESSOR","DefaultValueAccessor","COMPOSITION_BUFFER_MODE","_compositionMode","_composing","ɵgetDOM","getUserAgent","_isAndroid","writeValue","normalizedValue","_handleInput","_compositionStart","_compositionEnd","$event","NG_ASYNC_VALIDATORS","EMAIL_REGEXP","requiredValidator","required","email","minLength","hasValidLength","minlength","requiredLength","actualLength","maxLength","maxlength","nullValidator","regex","regexStr","requiredPattern","actualValue","patternValidator","validators","compose","composeAsync","obs","ɵisPromise","ɵisObservable","arrayOfErrors","errors","validator","isValidatorFn","presentValidators","isPresent","mergeErrors","executeValidators","normalizeValidators","observables","toObservable","forkJoin","controlValidators","dirValidator","_rawValidators","_rawAsyncValidators","currentValidators","makeValidatorsArray","validatorsToAdd","hasValidator","AbstractControlDirective","_onDestroyCallbacks","valid","invalid","disabled","pristine","touched","untouched","statusChanges","valueChanges","_setValidators","_composedValidatorFn","composeValidators","_setAsyncValidators","_composedAsyncValidatorFn","composeAsyncValidators","asyncValidator","_registerOnDestroy","_invokeOnDestroyCallbacks","hasError","errorCode","getError","ControlContainer","formDirective","ɵControlContainer_BaseFactory","valueAccessor","cd","_cd","submitted","NgControlStatus","AbstractControlStatus","NgControl","NgControlStatusGroup","setUpValidators","_pendingValue","_pendingChange","_pendingDirty","updateOn","updateControl","setUpViewChangePipeline","emitModelEvent","viewToModelUpdate","_unregisterOnChange","setUpModelChangePipeline","_pendingTouched","markAsTouched","setUpBlurPipeline","onDisabledChange","registerOnDisabledChange","_unregisterOnDisabledChange","setUpDisabledChangeHandler","validateControlPresenceOnChange","cleanUpValidators","_registerOnCollectionChange","getControlValidators","setValidators","mergeValidators","asyncValidators","getControlAsyncValidators","setAsyncValidators","onValidatorChange","updateValueAndValidity","isControlUpdated","updatedValidators","updatedAsyncValidators","markAsDirty","emitModelToViewChange","viewModel","model","_syncPendingControls","valueAccessors","defaultAccessor","builtinAccessor","customAccessor","VALID","INVALID","PENDING","DISABLED","validatorOrOpts","isOptionsObj","_hasOwnPendingAsyncValidator","_onCollectionChange","_onDisabledChange","coerceToValidator","coerceToAsyncValidator","validatorFn","asyncValidatorFn","_updateOn","addValidators","addAsyncValidators","removeValidators","removeAsyncValidators","hasAsyncValidator","clearValidators","clearAsyncValidators","onlySelf","markAllAsTouched","_forEachChild","markAsUntouched","_updateTouched","markAsPristine","_updatePristine","markAsPending","emitEvent","disable","skipPristineCheck","_parentMarkedDirty","_updateValue","_updateAncestors","changeFn","enable","setParent","_setInitialStatus","_cancelExistingSubscription","_runValidator","_calculateStatus","_runAsyncValidator","_updateTreeValidity","ctrl","_allControlsDisabled","_asyncValidationSubscription","setErrors","_updateControlsErrors","controlToFind","FormGroup","controls","FormArray","at","_find","_initObservables","_anyControlsHaveStatus","_anyControls","_anyControlsDirty","_anyControlsTouched","_isBoxedValue","formState","_setUpdateStrategy","AbstractControl","pickValidators","pickAsyncValidators","_applyFormState","emitViewToModelChange","patchValue","removeListItem","_setUpControls","registerControl","addControl","removeControl","setControl","contains","controlName","_checkAllValuesPresent","_throwIfControlMissing","getRawValue","_reduceChildren","acc","FormControl","subtreeUpdated","updated","_reduceValue","initValue","_registerControl","removeAt","formDirectiveProvider","NgForm","resolvedPromise","_directives","ngSubmit","_findContainer","setUpControl","getControl","addFormGroup","group","setUpFormContainer","removeFormGroup","getFormGroup","updateModel","onSubmit","syncPendingControls","onReset","resetForm","AbstractFormGroupDirective","_checkParentType","controlPath","ɵAbstractFormGroupDirective_BaseFactory","formControlBinding","NgModel","resolvedPromise$1","_registered","selectValueAccessor","_checkForErrors","_setUpControl","_updateDisabled","isPropertyUpdated","_isStandalone","_setUpStandalone","standalone","_checkName","disabledValue","ɵNgNoValidate","RadioControlRegistryModule","NG_MODEL_WITH_FORM_CONTROL_WARNING","formControlBinding$1","FormControlDirective","_ngModelWarningConfig","_ngModelWarningSent","_isControlChanged","previousForm","cleanUpControl","_ngModelWarningSentOnce","formDirectiveProvider$1","FormGroupDirective","_updateDomValue","_checkFormPresent","_updateValidators","_updateRegistrations","_oldForm","_setUpFormContainer","_cleanUpFormContainer","addFormArray","removeFormArray","getFormArray","oldCtrl","newCtrl","cleanUpFormContainer","formGroupNameProvider","FormGroupName","_hasInvalidParent","formArrayNameProvider","FormArrayName","controlNameBinding","FormControlName","_added","REQUIRED_VALIDATOR","RequiredValidator","_required","ɵInternalFormsSharedModule","FormsModule","ReactiveFormsModule","warnOnNgModelWithFormControl","ɵDomAdapter","supportsDOMEvents","GenericBrowserDomAdapter","ɵsetRootDomAdapter","BrowserDomAdapter","onAndCancel","evt","getDefaultDocument","createHtmlDocument","isElementNode","isShadowRoot","DocumentFragment","getGlobalEventTarget","getBaseHref","baseElement","getAttribute","urlParsingNode","pathName","relativePath","resetBaseElement","getCookie","TRANSITION_ID","SERVER_TRANSITION_PROVIDERS","transitionId","dom","setTestabilityGetter","BrowserGetTestability","ɵglobal","testabilities","didWork","decrement","didWork_","whenAllStable","parentElement","BrowserXhr","XMLHttpRequest","EVENT_MANAGER_PLUGINS","EventManager","plugins","_eventNameToPlugin","manager","_plugins","plugin","_findPluginFor","addGlobalEventListener","getZone","_doc","SharedStylesHost","_stylesSet","addStyles","additions","onStylesAdded","getAllStyles","DomSharedStylesHost","_hostNodes","_addStylesToHost","styleNodes","styleEl","addHost","hostNode","removeHost","styleNode","NAMESPACE_URIS","svg","xhtml","xlink","xml","xmlns","COMPONENT_REGEX","compId","flattenStyles","eventHandler","DomRendererFactory2","eventManager","sharedStylesHost","appId","rendererByCompId","defaultRenderer","DefaultDomRenderer2","EmulatedEncapsulationDomRenderer2","applyToHost","ShadowDomRenderer","newChild","refChild","oldChild","selectorOrNode","preserveContent","namespaceUri","removeAttributeNS","decoratePreventDefault","contentAttr","hostAttr","hostEl","shadowRoot","attachShadow","nodeOrShadowRoot","DomEventsPlugin","EventManagerPlugin","MODIFIER_KEYS","_keyMap","Del","Esc","Left","Right","Up","Down","Menu","Scroll","Win","_chromeNumKeyPadMap","A","F","J","N","MODIFIER_KEY_GETTERS","alt","altKey","ctrlKey","metaKey","shiftKey","KeyEventsPlugin","parseEventName","parsedEvent","outsideHandler","eventCallback","fullKey","domEventName","_normalizeKey","modifierName","keyIdentifier","getEventKey","modifierGetter","getEventFullKey","keyName","platformBrowser","ɵPLATFORM_BROWSER_ID","makeCurrent","ɵsetDocument","BROWSER_MODULE_PROVIDERS","ɵINJECTOR_SCOPE","XhrFactory","BrowserModule","NgxsBootstrapper","bootstrap$","appBootstrapped$","equalityCheck","INITIAL_STATE_TOKEN","InitialState","NGXS_STATE_CONTEXT_FACTORY","NGXS_STATE_FACTORY","getValue","closed","thrownError","ObjectUnsubscribedError","configOrBufferSize","windowTime","bufferSize","refCount","useRefCount","subject","isComplete","innerSub","shareReplayOperator","exhaustMap","ii","ExhaustMapOperator","ExhaustMapSubscriber","SimpleOuterSubscriber","hasSubscription","hasCompleted","tryNext","_innerSub","innerSubscriber","SimpleInnerSubscriber","innerSubscription","innerSubscribe","_complete","notifyNext","innerValue","notifyError","notifyComplete","DefaultIfEmptyOperator","DefaultIfEmptySubscriber","mergeAll","concatAll","isScheduler","PairwiseSubscriber","hasPrev","pair","_platformId","enter","func","isPlatformServer","runInsideAngular","leave","DispatchOutsideZoneNgxsExecutionStrategy","ROOT_STATE_TOKEN","FEATURE_STATE_TOKEN","NGXS_PLUGINS","META_KEY","NgxsConfig","defaultsState","selectorOptions","injectContainerState","suppressErrors","compatibility","strictContentSecurityPolicy","executionStrategy","NoopNgxsExecutionStrategy","USER_PROVIDED_NGXS_EXECUTION_STRATEGY","NGXS_EXECUTION_STRATEGY","INJECTOR","lastIndex","isObject$1","sources","allowedTypes","statuses","mapOperator","mapAction","allowedMap","filterMap","getActionTypeFromInstance","createAllowedActionTypesMap","allowedStatusMap","createAllowedStatusesMap","allowedStatuses","actionType","statusMatch","filterStatus","ofActionOperator","ngxsExecutionStrategy","InternalNgxsExecutionStrategy","_executionStrategy","_itemQueue","_busyPushingNext","nextValue","InternalActions","OrderedSubject","ɵInternalActions_BaseFactory","Actions","internalActions$","internalExecutionStrategy","sharedInternalActions$","leaveNgxs","childSubscription","funcs","curr","nextArgs","_errorHandler","reportErrorSafely","InternalErrorReporter","StateStream","BehaviorSubject","PluginManager","_parentManager","_pluginHandlers","registerHandlers","rootPlugins","pluginHandlers","getPluginHandlers","InternalDispatchedActionResults","ɵInternalDispatchedActionResults_BaseFactory","InternalDispatcher","_actions","_actionResults","_pluginManager","_stateStream","_ngxsExecutionStrategy","_internalErrorReporter","actionOrActions","dispatchByEvents","internalErrorReporter","subscribed","ngxsErrorHandler","dispatchSingle","prevState","nextState","nextAction","actionResult$","getActionResultStream","createDispatchObservable","shareReplay","EMPTY","InternalStateOperations","_dispatcher","getRootStateOperations","getState","newState","setStateToTheCurrentWithNew","results","stateOperations","currentState","defaults","StateContextFactory","_internalStateOperations","createStateContext","mappedStore","currentAppState","newAppState","stateOperator","setStateValue","setStateFromOperator","existingState","throwPatchingArrayError","throwPatchingPrimitiveError","simplePatch","isStateOperator","StateFactory","_parentFactory","_stateContextFactory","_initialState","_actionsSubscription","_states","_statesByName","_statePaths","getRuntimeSelectorContext","defaultEqualityCheck","lastArgs","lastResult","areArgumentsShallowlyEqual","memoized","memoize","stateFactory","statePaths","paths","copyOfPaths","compliantPropGetter","segments","seg","l","expr","fastPropGetter","propGetter","getStateGetter","resolveGetter","getSelectorOptions","localOptions","states","statesByName","V","stateClasses","newStates","addToStatesMap","stateGraph","findName","stateClass","buildGraph","sortedStates","graph","sorted","visit","ancestors","dep","topologicalSort","newObj","keyToFind","findFullParentPath","nameGraph","nameToState","bootstrappedStores","addRuntimeInfoToMeta","stateMap","isInitialised","cloneDefaults","hasBeenMountedAndBootstrapped","addAndReturnDefaults","mappedStores","connectActionHandlers","dispatched$","invokeActions","defaultIfEmpty","catchError","actionMetas","actionMeta","stateContext","cancelUncompleted","ofActionDispatched","statesMap","stateName","getStoreMetadata","valueIsBootstrappedInInitialState","_internalExecutionStrategy","_stateFactory","initialStateValue","_selectableStateStream","observeOn","queueScheduler","initStateStream","select","selectorFn","getStoreBoundSelectorFn","distinctUntilChanged","selectOnce","selectSnapshot","SELECTOR_META_KEY","getSelectorMetadata","makeRootSelector","getRootSelectorFactory","makeSelectorFn","runtimeContext","storeValues","defaultStateNotEmpty","LifecycleStateManager","_store","_bootstrapper","_destroy$","ngxsBootstrap","_invokeInitOnStates","appBootstrapped","_invokeBootstrapOnStates","ngxsOnChanges","startWith","PairwiseOperator","NgxsSimpleChange","ngxsOnInit","_getStateContext","ngxsAfterBootstrap","SelectFactory","addedStates","NgxsRootModule","internalStateOperations","_select","lifecycleStateManager","InitState","NgxsFeatureModule","flattenedStates","flattenStates","UpdateState","NgxsModule","ngxsTokenProviders","ROOT_OPTIONS","ngxsConfigFactory","appBootstrapListenerFactory","getInitialState","bootstrapper","endOfDesiredMonth","daysInMonth","addYears","argument","argStr","stack","calendar","require","finder","translator","includeWeekends","byYear","byMonth","translate","english","FinnishHolidays","dateUtils","yearFactory","MAX_HOLIDAYS","initialize","holidays","discardWeekends","holiday","thisDay","thisMonth","thisYear","FRIDAY","SATURDAY","SUNDAY","getDayOfWeek","subtractDays","easterSunday","n0","easterMonday","goodFriday","resolveFriday","ascensionDay","pentecost","midsummerEve","range","midsummerDay","allSaintsDay","october31","zerofy","fromNumber","toNumber","currentHolidays","nextIndex","nextHoliday","nextDate","nextHolidays","previousHoliday","previousDate","previousHolidays","translations","Epiphany","Pentecost","loadHolidays","Year","addHoliday","description","kind","hasValue","do","accept","nextOrObserver","empty","Notification","undefinedValueNotification","completeNotification","_isScalar","observable","rxSubscriberSymbol","emptyObserver","toSubscriber","syncErrorThrowable","_trySubscribe","syncErrorThrown","syncErrorValue","isStopped","canReportError","promiseCtor","getPromiseCtor","Symbol_observable","operations","fns","identity","pipeFromArray","toPromise","hostReportError","_events","_infiniteTimeWindow","_bufferSize","_windowTime","W","nextInfiniteTimeWindow","nextTimeWindow","ReplayEvent","_getNow","_trimBufferThenGetEvents","len","SubjectSubscription","ObserveOnSubscriber","eventsCount","spliceCount","SubjectSubscriber","copy","subscriberIndex","destinationOrNext","SafeSubscriber","_error","_unsubscribeAndRecycle","_parentOrParents","_parentSubscriber","isFunction","__tryOrSetError","__tryOrUnsub","useDeprecatedSynchronousErrorHandling","wrappedComplete","_unsubscribe","UnsubscriptionError","UnsubscriptionErrorImpl","_subscriptions","_ctorUnsubscribe","flattenUnsubscriptionErrors","sub","teardown","tmp","subscriptions","subscriptionIndex","errs","_enable_super_gross_mode_that_will_cause_bad_things","subscribeTo","schedule","emptyScheduled","forkJoinInternal","completed","emitted","isInteropObservable","scheduleObservable","schedulePromise","isArrayLike","scheduleArray","Symbol_iterator","isIterable","return","scheduleIterable","scheduled","subscribeToArray","setupSubscription","sourceObj","isEventTarget","on","off","isJQueryStyleEventEmitter","addListener","removeListener","isNodeStyleEventEmitter","concurrent","fromArray","CatchOperator","caught","CatchSubscriber","err2","dueTime","async","DebounceTimeOperator","DebounceTimeSubscriber","debouncedSubscription","lastValue","clearDebounce","dispatchNext","debouncedNext","delayFor","absoluteDelay","DelayOperator","DelaySubscriber","active","errored","notification","_schedule","scheduleNotification","DelayMessage","compare","keySelector","DistinctUntilChangedOperator","DistinctUntilChangedSubscriber","hasKey","FilterOperator","FilterSubscriber","MapOperator","MapSubscriber","MergeMapOperator","MergeMapSubscriber","buffer","_tryNext","ish","ObserveOnOperator","scheduleMessage","ObserveOnMessage","RefCountOperator","connectable","_refCount","refCounter","RefCountSubscriber","connection","sharedConnection","_connection","subjectFactory","_isComplete","getSubject","_subject","ConnectableSubscriber","higherOrderRefCount","connectableObservableDescriptor","connectableProto","ConnectableObservable","subjectOrSubjectFactory","multicast","shareSubjectFactory","ArgumentOutOfRangeError","ArgumentOutOfRangeErrorImpl","TakeOperator","TakeSubscriber","notifier","TakeUntilOperator","takeUntilSubscriber","TakeUntilSubscriber","notifierSubscription","seenValue","DoOperator","TapSubscriber","_tapNext","_tapError","_tapComplete","work","Action","recycleAsyncId","requestAsyncId","setInterval","flush","clearInterval","execute","_execute","errorValue","Scheduler","SchedulerAction","AsyncScheduler","AsyncAction","rxSubscriber","ObjectUnsubscribedErrorImpl","subscribeToObservable","subscribeToPromise","subscribeToIterable","Weekday","setMilliseconds","setSeconds","plusDays","years","Friday","Sunday","refDate","fixedDate","dateA","dateB","isSameDate","__importDefault","mod","__esModule","holiday_names_sv_se_1","date_utils_1","all_saints_eve_1","mightBe","AllSaintsDay","firstOfWeekdayAfterDate","allSaintsEve","AllSaintsEve","easter_sunday_1","EasterSundayDependant","AscensionDay","easterOffset","fixed_1","BoxingDay","boxingDay","ChristmasDay","christmasDay","ChristmasEve","christmasEve","EasterMonday","goldenNumber","century","corx","corz","sunday","epact","moon","EasterSunday","offsetDays","epiphany","Fixed","GoodFriday","HolySaturday","holySaturday","all_saints_day_1","ascension_day_1","boxing_day_1","christmas_day_1","christmas_eve_1","easter_monday_1","epiphany_1","good_friday_1","holy_saturday_1","maundy_thursday_1","may_first_1","midsummer_day_1","midsummer_eve_1","national_day_1","new_years_day_1","new_years_eve_1","pentecost_eve_1","twelfth_night_1","walpurgis_night_1","whit_sunday_1","MaundyThursday","maundyThursday","MayFirst","mayFirst","MidsummerDay","MidsummerEve","NationalDay","swedishNationalDay","NewYearsDay","newYearsDay","NewYearsEve","newYearsEve","PentecostEve","pentecostEve","TwelfthNight","twelfthNight","WalpurgisNight","walpurgisNight","WhitSunday","whitSunday","svSe","__createBinding","k2","getOwnPropertyDescriptor","__exportStar","dates_1","Holidays","Holiday","d1","d2","nextYear","plusYears","getHolidays","possible","isHoliday","set1","set2","len1","len2","_isPlaceholder","f1","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","f2","_curry1","combined","argsIdx","left","combinedIdx","_arity","_curryN","_curry2","curryN","origFn","_concat","methodNames","transducerCreator","_isArray","_isTransformer","transducer","xf","XAll","_xfBase","_reduced","_dispatchable","Et","functor","_isString","XWrap","thisObj","iter","methodName","symIterator","_xwrap","_isArrayLike","_arrayReduce","_methodReduce","_iterableReduce","XMap","_has","hasEnumBug","propertyIsEnumerable","nonEnumerableProps","hasArgsEnumBug","nIdx","ks","checkArgsLength","_isArguments","vn","_xmap","_reduce","_map","rr","isInteger","Ze","Cn","_isInteger","nth","Xn","f3","_curry3","Ce","preds","pluck","Wt","Ye","applyF","applyX","ap","vals","Yt","arity","lifted","hn","liftN","tn","_isFunction","and","nt","methodname","_checkForMethod","fromIndex","ro","_pipe","tail","pred","Rr","aIterator","bIterator","stackA","stackB","_arrayFromIterator","_equals","_includesWith","aItem","eq","_objectIs","typeA","_functionName","ignoreCase","multiline","sticky","unicode","_uniqContentEquals","keysA","extendedStackA","extendedStackB","inf","_indexOf","pad","toISOString","toFixed","XFilter","filterable","_isObject","_filter","seen","recur","xs","_includes","_toString","mapPairs","_quote","_toISOString","repr","XDrop","XTake","ret","zi","Ja","_isTypedArray","Ki","drop","cu","El","bl","Ms","Tl","Ctor","Il","Ol","Nl","invoker","Fl","pathsArray","Lr","pathAr","yu","Vl","er","Bn","defaultTo","Gr","propPath","Fi","replacement","us","aa","bb","ld","Yl","zl","hd","Ql","Mu","nc","outerlist","innerlist","Su","whenTrueFn","lp","rv"],"sources":["./$_lazy_route_resources|lazy|groupOptions:%20%7B%7D|namespace%20object","../core/src/lib/functions/error.ts","../core/src/lib/functions/storybook.ts","../core/src/lib/decorators/required.ts","../core/src/lib/decorators/slot.ts","../core/src/lib/decorators/viewstate.ts","../core/src/lib/interceptors/cache.interceptor.ts","../core/src/lib/interceptors/cookie.interceptor.ts","../core/src/lib/interceptors/mockup-http.interceptor.ts","../core/src/lib/pipes/pipes.module.ts","../node_modules/rxjs/_esm2015/internal/observable/dom/WebSocketSubject.js","../core/src/lib/services/websocket.service.ts","../node_modules/rxjs/_esm2015/internal/observable/dom/webSocket.js","../core/src/lib/services/data-layer.service.ts","../core/src/lib/services/file-download.service.ts","../core/src/lib/services/global-store.service.ts","../core/src/lib/slots/slot.directive.ts","../core/src/lib/store/store.service.ts","../core/src/lib/store/state.mixin.ts","../core/src/lib/validators/validators.module.ts","../core/src/lib/variables/index.ts","../core/src/lib/elements/elements.ts","../core/src/lib/elements/elements-testing.ts","../core/src/lib/pipes/month.pipe.ts","../core/src/lib/pipes/relative-time-format.pipe.ts","../core/src/lib/pipes/unit.pipe.ts","../core/src/lib/validators/validators.directive.ts","../core/src/lib/validators/validators.ts","./src/environments/environment.prod.ts","./src/main.ts","../util/src/lib/nullify.ts","../util/src/lib/merge-deep.ts","../util/src/lib/uuid.ts","../util/src/lib/url.ts","../util/src/lib/coerce-boolean-property.ts","../node_modules/date-fns/esm/startOfDay/index.js","../node_modules/date-fns/esm/startOfMonth/index.js","../node_modules/date-fns/esm/startOfYear/index.js","../node_modules/date-fns/esm/_lib/defaultOptions/index.js","../node_modules/date-fns/esm/startOfWeek/index.js","../node_modules/date-fns/esm/startOfISOWeek/index.js","../node_modules/date-fns/esm/getWeekYear/index.js","../node_modules/date-fns/esm/startOfWeekYear/index.js","../node_modules/date-fns/esm/getWeek/index.js","../node_modules/date-fns/esm/addDays/index.js","../node_modules/date-fns/esm/getDay/index.js","../node_modules/date-fns/esm/nextDay/index.js","../node_modules/date-fns/esm/getYear/index.js","../node_modules/date-fns/esm/getMonth/index.js","../node_modules/date-fns/esm/getISOWeekYear/index.js","../node_modules/date-fns/esm/startOfISOWeekYear/index.js","../node_modules/date-fns/esm/getISOWeek/index.js","../node_modules/date-fns/esm/getDate/index.js","../util/src/lib/date.ts","../node_modules/date-fns/esm/setWeek/index.js","../node_modules/date-fns/esm/nextMonday/index.js","../util/src/lib/coerce-date-property.ts","../util/src/lib/get-percentile.ts","../util/src/lib/get-range-indexes.ts","../util/src/lib/coerce-number-property.ts","../util/src/lib/case-converter.ts","../util/src/lib/css.ts","../util/src/lib/debounce.ts","../util/src/lib/variables.ts","../util/src/lib/chunk.ts","../util/src/lib/date-range.ts","../node_modules/date-fns/esm/getDaysInMonth/index.js","../node_modules/date-fns/esm/differenceInCalendarYears/index.js","../node_modules/date-fns/esm/compareAsc/index.js","../node_modules/date-fns/esm/isWeekend/index.js","../util/src/lib/validate.ts","../node_modules/date-fns/esm/differenceInYears/index.js","../node_modules/date-fns/esm/addMilliseconds/index.js","../node_modules/date-fns/esm/addHours/index.js","../node_modules/date-fns/esm/areIntervalsOverlapping/index.js","../node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","../node_modules/date-fns/esm/differenceInCalendarDays/index.js","../node_modules/date-fns/esm/isSameDay/index.js","../node_modules/date-fns/esm/isDate/index.js","../node_modules/date-fns/esm/isValid/index.js","../node_modules/date-fns/esm/differenceInBusinessDays/index.js","../node_modules/date-fns/esm/endOfMonth/index.js","../node_modules/date-fns/esm/endOfWeek/index.js","../node_modules/date-fns/esm/endOfISOWeek/index.js","../node_modules/date-fns/esm/endOfYear/index.js","../node_modules/date-fns/esm/subMilliseconds/index.js","../node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","../node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","../node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","../node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","../node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","../node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","../node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","../node_modules/date-fns/esm/_lib/getUTCWeek/index.js","../node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","../node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","../node_modules/date-fns/esm/_lib/format/formatters/index.js","../node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","../node_modules/date-fns/esm/_lib/format/longFormatters/index.js","../node_modules/date-fns/esm/_lib/protectedTokens/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","../node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","../node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","../node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","../node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","../node_modules/date-fns/esm/_lib/defaultLocale/index.js","../node_modules/date-fns/esm/locale/en-US/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","../node_modules/date-fns/esm/format/index.js","../node_modules/date-fns/esm/formatISO/index.js","../node_modules/date-fns/esm/fromUnixTime/index.js","../node_modules/date-fns/esm/isAfter/index.js","../node_modules/date-fns/esm/isBefore/index.js","../node_modules/date-fns/esm/isSameMonth/index.js","../node_modules/date-fns/esm/isSameYear/index.js","../node_modules/date-fns/esm/isMonday/index.js","../node_modules/date-fns/esm/isWithinInterval/index.js","../node_modules/date-fns/esm/lastDayOfYear/index.js","../node_modules/date-fns/esm/eachDayOfInterval/index.js","../node_modules/date-fns/esm/eachMonthOfInterval/index.js","../node_modules/date-fns/esm/eachYearOfInterval/index.js","../../node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../../node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../../node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/date-fns/esm/_lib/assign/index.js","../../node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../../node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/inherits.js","../../node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../../node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../../node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../../node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/createSuper.js","../../node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../../node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../../node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../../node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/createClass.js","../../node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/date-fns/esm/parse/_lib/Setter.js","../node_modules/date-fns/esm/parse/_lib/Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/EraParser.js","../node_modules/date-fns/esm/parse/_lib/constants.js","../node_modules/date-fns/esm/constants/index.js","../node_modules/date-fns/esm/parse/_lib/utils.js","../node_modules/date-fns/esm/parse/_lib/parsers/YearParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekYearParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekYearParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ExtendedYearParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/QuarterParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/StandAloneQuarterParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/MonthParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/StandAloneMonthParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekParser.js","../node_modules/date-fns/esm/_lib/setUTCWeek/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekParser.js","../node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/DateParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/DayOfYearParser.js","../node_modules/date-fns/esm/_lib/setUTCDay/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/DayParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/LocalDayParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/StandAloneLocalDayParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISODayParser.js","../node_modules/date-fns/esm/_lib/setUTCISODay/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/AMPMParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/AMPMMidnightParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/DayPeriodParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/Hour1to12Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/Hour0to23Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/Hour0To11Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/Hour1To24Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/MinuteParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/SecondParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/FractionOfSecondParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneWithZParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/TimestampSecondsParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/TimestampMillisecondsParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/index.js","../node_modules/date-fns/esm/parse/index.js","../node_modules/date-fns/esm/endOfToday/index.js","../node_modules/date-fns/esm/startOfDecade/index.js","../node_modules/date-fns/esm/endOfDecade/index.js","../node_modules/date-fns/esm/isEqual/index.js","../node_modules/date-fns/esm/subMonths/index.js","../node_modules/date-fns/esm/subDays/index.js","../node_modules/date-fns/esm/addWeeks/index.js","../node_modules/date-fns/esm/subWeeks/index.js","../node_modules/date-fns/esm/getTime/index.js","../node_modules/date-fns/esm/getUnixTime/index.js","../util/src/lib/video-management/applyReducedMotion.ts","../node_modules/rxjs/_esm2015/internal/operators/finalize.js","../util/src/lib/video-management/limit-video-loop.count.ts","../util/src/lib/rgb-to-hex.ts","../util/src/lib/hex-to-rgb.ts","../util/src/lib/get-z-scores.ts","../node_modules/@angular/common/__ivy_ngcc__/fesm2015/common.js","../node_modules/@angular/common/__ivy_ngcc__/fesm2015/http.js","../node_modules/rxjs/_esm2015/internal/operators/concatMap.js","../node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js","../node_modules/@angular/forms/__ivy_ngcc__/fesm2015/forms.js","../node_modules/@angular/platform-browser/__ivy_ngcc__/fesm2015/platform-browser.js","../node_modules/@ngxs/store/__ivy_ngcc__/fesm2015/ngxs-store-internals.js","../node_modules/rxjs/_esm2015/internal/BehaviorSubject.js","../node_modules/rxjs/_esm2015/internal/util/isObservable.js","../node_modules/rxjs/_esm2015/internal/operators/shareReplay.js","../node_modules/rxjs/_esm2015/internal/operators/exhaustMap.js","../node_modules/rxjs/_esm2015/internal/operators/defaultIfEmpty.js","../node_modules/rxjs/_esm2015/internal/observable/concat.js","../node_modules/rxjs/_esm2015/internal/operators/concatAll.js","../node_modules/rxjs/_esm2015/internal/operators/startWith.js","../node_modules/rxjs/_esm2015/internal/operators/pairwise.js","../node_modules/@ngxs/store/__ivy_ngcc__/fesm2015/ngxs-store.js","../node_modules/date-fns/esm/_lib/requiredArgs/index.js","../node_modules/date-fns/esm/_lib/toInteger/index.js","../node_modules/date-fns/esm/addMonths/index.js","../node_modules/date-fns/esm/addYears/index.js","../node_modules/date-fns/esm/endOfDay/index.js","../node_modules/date-fns/esm/subYears/index.js","../node_modules/date-fns/esm/toDate/index.js","../node_modules/finnish-holidays-js/index.js","../node_modules/finnish-holidays-js/lib/calendar.js","../node_modules/finnish-holidays-js/lib/date-utils.js","../node_modules/finnish-holidays-js/lib/finder.js","../node_modules/finnish-holidays-js/lib/translator.js","../node_modules/finnish-holidays-js/lib/year-factory.js","../node_modules/rxjs/_esm2015/internal/Notification.js","../node_modules/rxjs/_esm2015/internal/Observable.js","../node_modules/rxjs/_esm2015/internal/util/toSubscriber.js","../node_modules/rxjs/_esm2015/internal/util/canReportError.js","../node_modules/rxjs/_esm2015/internal/util/pipe.js","../node_modules/rxjs/_esm2015/internal/Observer.js","../node_modules/rxjs/_esm2015/internal/ReplaySubject.js","../node_modules/rxjs/_esm2015/internal/Subject.js","../node_modules/rxjs/_esm2015/internal/SubjectSubscription.js","../node_modules/rxjs/_esm2015/internal/Subscriber.js","../node_modules/rxjs/_esm2015/internal/util/UnsubscriptionError.js","../node_modules/rxjs/_esm2015/internal/Subscription.js","../node_modules/rxjs/_esm2015/internal/config.js","../node_modules/rxjs/_esm2015/internal/innerSubscribe.js","../node_modules/rxjs/_esm2015/internal/observable/empty.js","../node_modules/rxjs/_esm2015/internal/observable/forkJoin.js","../node_modules/rxjs/_esm2015/internal/observable/from.js","../node_modules/rxjs/_esm2015/internal/scheduled/scheduled.js","../node_modules/rxjs/_esm2015/internal/util/isInteropObservable.js","../node_modules/rxjs/_esm2015/internal/scheduled/scheduleObservable.js","../node_modules/rxjs/_esm2015/internal/scheduled/schedulePromise.js","../node_modules/rxjs/_esm2015/internal/util/isIterable.js","../node_modules/rxjs/_esm2015/internal/scheduled/scheduleIterable.js","../node_modules/rxjs/_esm2015/internal/observable/fromArray.js","../node_modules/rxjs/_esm2015/internal/observable/fromEvent.js","../node_modules/rxjs/_esm2015/internal/observable/merge.js","../node_modules/rxjs/_esm2015/internal/observable/of.js","../node_modules/rxjs/_esm2015/internal/observable/throwError.js","../node_modules/rxjs/_esm2015/internal/operators/catchError.js","../node_modules/rxjs/_esm2015/internal/operators/debounceTime.js","../node_modules/rxjs/_esm2015/internal/operators/delay.js","../node_modules/rxjs/_esm2015/internal/util/isDate.js","../node_modules/rxjs/_esm2015/internal/operators/distinctUntilChanged.js","../node_modules/rxjs/_esm2015/internal/operators/filter.js","../node_modules/rxjs/_esm2015/internal/operators/map.js","../node_modules/rxjs/_esm2015/internal/operators/mergeAll.js","../node_modules/rxjs/_esm2015/internal/operators/mergeMap.js","../node_modules/rxjs/_esm2015/internal/operators/observeOn.js","../node_modules/rxjs/_esm2015/internal/operators/refCount.js","../node_modules/rxjs/_esm2015/internal/observable/ConnectableObservable.js","../node_modules/rxjs/_esm2015/internal/operators/share.js","../node_modules/rxjs/_esm2015/internal/operators/multicast.js","../node_modules/rxjs/_esm2015/internal/util/ArgumentOutOfRangeError.js","../node_modules/rxjs/_esm2015/internal/operators/take.js","../node_modules/rxjs/_esm2015/internal/operators/takeUntil.js","../node_modules/rxjs/_esm2015/internal/util/noop.js","../node_modules/rxjs/_esm2015/internal/operators/tap.js","../node_modules/rxjs/_esm2015/internal/scheduled/scheduleArray.js","../node_modules/rxjs/_esm2015/internal/scheduler/Action.js","../node_modules/rxjs/_esm2015/internal/scheduler/AsyncAction.js","../node_modules/rxjs/_esm2015/internal/Scheduler.js","../node_modules/rxjs/_esm2015/internal/scheduler/AsyncScheduler.js","../node_modules/rxjs/_esm2015/internal/scheduler/async.js","../node_modules/rxjs/_esm2015/internal/scheduler/queue.js","../node_modules/rxjs/_esm2015/internal/scheduler/QueueScheduler.js","../node_modules/rxjs/_esm2015/internal/scheduler/QueueAction.js","../node_modules/rxjs/_esm2015/internal/symbol/iterator.js","../node_modules/rxjs/_esm2015/internal/symbol/observable.js","../node_modules/rxjs/_esm2015/internal/symbol/rxSubscriber.js","../node_modules/rxjs/_esm2015/internal/util/ObjectUnsubscribedError.js","../node_modules/rxjs/_esm2015/internal/util/hostReportError.js","../node_modules/rxjs/_esm2015/internal/util/identity.js","../node_modules/rxjs/_esm2015/internal/util/isArray.js","../node_modules/rxjs/_esm2015/internal/util/isArrayLike.js","../node_modules/rxjs/_esm2015/internal/util/isFunction.js","../node_modules/rxjs/_esm2015/internal/util/isObject.js","../node_modules/rxjs/_esm2015/internal/util/isPromise.js","../node_modules/rxjs/_esm2015/internal/util/isScheduler.js","../node_modules/rxjs/_esm2015/internal/util/subscribeTo.js","../node_modules/rxjs/_esm2015/internal/util/subscribeToObservable.js","../node_modules/rxjs/_esm2015/internal/util/subscribeToPromise.js","../node_modules/rxjs/_esm2015/internal/util/subscribeToIterable.js","../node_modules/rxjs/_esm2015/internal/util/subscribeToArray.js","../node_modules/swedish-holidays/dist/date-utils.js","../node_modules/swedish-holidays/dist/dates/all-saints-day.js","../node_modules/swedish-holidays/dist/dates/all-saints-eve.js","../node_modules/swedish-holidays/dist/dates/ascension-day.js","../node_modules/swedish-holidays/dist/dates/boxing-day.js","../node_modules/swedish-holidays/dist/dates/christmas-day.js","../node_modules/swedish-holidays/dist/dates/christmas-eve.js","../node_modules/swedish-holidays/dist/dates/easter-monday.js","../node_modules/swedish-holidays/dist/dates/easter-sunday.js","../node_modules/swedish-holidays/dist/dates/epiphany.js","../node_modules/swedish-holidays/dist/dates/fixed.js","../node_modules/swedish-holidays/dist/dates/good-friday.js","../node_modules/swedish-holidays/dist/dates/holy-saturday.js","../node_modules/swedish-holidays/dist/dates/index.js","../node_modules/swedish-holidays/dist/dates/maundy-thursday.js","../node_modules/swedish-holidays/dist/dates/may-first.js","../node_modules/swedish-holidays/dist/dates/midsummer-day.js","../node_modules/swedish-holidays/dist/dates/midsummer-eve.js","../node_modules/swedish-holidays/dist/dates/national-day.js","../node_modules/swedish-holidays/dist/dates/new-years-day.js","../node_modules/swedish-holidays/dist/dates/new-years-eve.js","../node_modules/swedish-holidays/dist/dates/pentecost-eve.js","../node_modules/swedish-holidays/dist/dates/twelfth-night.js","../node_modules/swedish-holidays/dist/dates/walpurgis-night.js","../node_modules/swedish-holidays/dist/dates/whit-sunday.js","../node_modules/swedish-holidays/dist/holiday-names.sv-se.js","../node_modules/swedish-holidays/dist/index.js","../node_modules/ramda/es/__.js","../node_modules/ramda/es/internal/_concat.js","../node_modules/ramda/es/internal/_isPlaceholder.js","../node_modules/ramda/es/internal/_curry1.js","../node_modules/ramda/es/internal/_arity.js","../node_modules/ramda/es/internal/_curry2.js","../node_modules/ramda/es/internal/_curryN.js","../node_modules/ramda/es/curryN.js","../node_modules/ramda/es/addIndex.js","../node_modules/ramda/es/internal/_isArray.js","../node_modules/ramda/es/internal/_isTransformer.js","../node_modules/ramda/es/internal/_dispatchable.js","../node_modules/ramda/es/internal/_reduced.js","../node_modules/ramda/es/internal/_xfBase.js","../node_modules/ramda/es/internal/_xall.js","../node_modules/ramda/es/all.js","../node_modules/ramda/es/max.js","../node_modules/ramda/es/internal/_map.js","../node_modules/ramda/es/internal/_isString.js","../node_modules/ramda/es/internal/_isArrayLike.js","../node_modules/ramda/es/internal/_xwrap.js","../node_modules/ramda/es/bind.js","../node_modules/ramda/es/internal/_reduce.js","../node_modules/ramda/es/internal/_xmap.js","../node_modules/ramda/es/internal/_has.js","../node_modules/ramda/es/internal/_isArguments.js","../node_modules/ramda/es/keys.js","../node_modules/ramda/es/map.js","../node_modules/ramda/es/internal/_isInteger.js","../node_modules/ramda/es/nth.js","../node_modules/ramda/es/prop.js","../node_modules/ramda/es/pluck.js","../node_modules/ramda/es/internal/_curry3.js","../node_modules/ramda/es/reduce.js","../node_modules/ramda/es/allPass.js","../node_modules/ramda/es/anyPass.js","../node_modules/ramda/es/ap.js","../node_modules/ramda/es/values.js","../node_modules/ramda/es/internal/_isFunction.js","../node_modules/ramda/es/and.js","../node_modules/ramda/es/liftN.js","../node_modules/ramda/es/lift.js","../node_modules/ramda/es/both.js","../node_modules/ramda/es/clamp.js","../node_modules/ramda/es/internal/_pipe.js","../node_modules/ramda/es/internal/_checkForMethod.js","../node_modules/ramda/es/slice.js","../node_modules/ramda/es/tail.js","../node_modules/ramda/es/pipe.js","../node_modules/ramda/es/internal/_arrayFromIterator.js","../node_modules/ramda/es/internal/_includesWith.js","../node_modules/ramda/es/internal/_objectIs.js","../node_modules/ramda/es/type.js","../node_modules/ramda/es/internal/_equals.js","../node_modules/ramda/es/internal/_functionName.js","../node_modules/ramda/es/equals.js","../node_modules/ramda/es/internal/_includes.js","../node_modules/ramda/es/internal/_indexOf.js","../node_modules/ramda/es/internal/_quote.js","../node_modules/ramda/es/internal/_toISOString.js","../node_modules/ramda/es/internal/_isObject.js","../node_modules/ramda/es/internal/_xfilter.js","../node_modules/ramda/es/filter.js","../node_modules/ramda/es/internal/_filter.js","../node_modules/ramda/es/reject.js","../node_modules/ramda/es/internal/_complement.js","../node_modules/ramda/es/internal/_toString.js","../node_modules/ramda/es/toString.js","../node_modules/ramda/es/internal/_xdrop.js","../node_modules/ramda/es/drop.js","../node_modules/ramda/es/internal/_xtake.js","../node_modules/ramda/es/take.js","../node_modules/ramda/es/last.js","../node_modules/ramda/es/empty.js","../node_modules/ramda/es/internal/_isTypedArray.js","../node_modules/ramda/es/takeLast.js","../node_modules/ramda/es/gt.js","../node_modules/ramda/es/gte.js","../node_modules/ramda/es/includes.js","../node_modules/ramda/es/invoker.js","../node_modules/ramda/es/is.js","../node_modules/ramda/es/isEmpty.js","../node_modules/ramda/es/isNil.js","../node_modules/ramda/es/join.js","../node_modules/ramda/es/paths.js","../node_modules/ramda/es/path.js","../node_modules/ramda/es/lte.js","../node_modules/ramda/es/sum.js","../node_modules/ramda/es/add.js","../node_modules/ramda/es/modulo.js","../node_modules/ramda/es/multiply.js","../node_modules/ramda/es/defaultTo.js","../node_modules/ramda/es/pathOr.js","../node_modules/ramda/es/pathSatisfies.js","../node_modules/ramda/es/replace.js","../node_modules/ramda/es/sortBy.js","../node_modules/ramda/es/split.js","../node_modules/ramda/es/length.js","../node_modules/ramda/es/internal/_isNumber.js","../node_modules/ramda/es/splitAt.js","../node_modules/ramda/es/splitEvery.js","../node_modules/ramda/es/subtract.js","../node_modules/ramda/es/toLower.js","../node_modules/ramda/es/transpose.js","../node_modules/ramda/es/when.js","../node_modules/ramda/es/zipWith.js","../../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../../node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/typeof.js"],"sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(() => {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = () => ([]);\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 8255;\nmodule.exports = webpackEmptyAsyncContext;","/**\n * Logs a formated error message in console\n * @param message Error message to log\n */\nexport function logError(message: string) {\n return console.error(`Vattenfall Elements: ${message}`);\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/naming-convention */\nimport { Story } from \"@storybook/angular/types-6-0\";\n\n/**\n * The type description a Storybook story options\n */\nexport type StoryOptions = {\n /**\n * Short description about story\n */\n description?: string;\n /**\n * The name of the story if different than the exported variable declaration\n */\n name?: string;\n /**\n * CSS styles for the parent host element\n */\n style?: string;\n /**\n * Override default properties\n */\n props?: Record;\n};\n\n/**\n * Returns a Storybook story using the provided template with the template as its source code\n * @param template HTML template markup of the story\n * @param options Short description about story\n * @returns Storybook story\n */\nexport function getStory(template: string, options?: StoryOptions) {\n const storyFunction: Story = () => ({\n template,\n props: options?.props,\n styles: [options?.style ?? \"\"],\n });\n storyFunction.parameters = {\n docs: {\n source: {\n code: template,\n iframeHeight: 400,\n },\n storyDescription: options?.description,\n },\n };\n if (options?.name) storyFunction.storyName = options.name;\n return storyFunction;\n}\n\ndeclare global {\n interface Window {\n __STORYBOOK_ADDONS: any;\n __STORYBOOK_STORY_STORE__: any;\n }\n}\n\n/**\n * Whether the application is running in Storybook\n */\nexport const isStorybookRuntime = \"__STORYBOOK_ADDONS\" in window;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { logError } from \"../functions\";\n\n/**\n * Decorator that checks that if a class property has a value and logs an error when not\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function Required(): PropertyDecorator {\n return function (target: any, propertyKey: PropertyKey) {\n // Attaching the value on a private property of this ensures that\n // it can be set on the class instance as oppose to the prototype\n // Casting as string due to an issue in TypeScript: https://github.com/microsoft/TypeScript/issues/1863\n const symbol = Symbol(\"__Required__\" + String(propertyKey)) as unknown as string;\n const instances = new Set();\n Object.defineProperty(target, propertyKey, {\n get() {\n instances.add(this);\n return this[symbol];\n },\n set(value: any) {\n instances.add(this);\n this[symbol] = value;\n },\n });\n setTimeout(\n () => {\n instances.forEach((instance) => {\n if (instance[symbol] === undefined)\n logError(`${target.constructor.name}: The property '${String(propertyKey)}' is required but empty.`);\n });\n },\n // Allow for some time to pass before checking if the properties has a value\n 1000\n );\n };\n}\n","// TODO (stefan):\n// I feel that the documentation in here is a bit verbose. I think these {@link bindingPropertyName} qwirks are great for\n// public facing APIs but are less helpful when you just want to quickly understand the code.\n// Also, the code provided in the examples doesn't work when using intellisense.\n// I suggest we simply and fix these issues in the documentation.\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { camelToDashCase, kebabToCamelCase } from \"@vattenfall/util\";\n\nimport { logError, isStorybookRuntime } from \"../functions\";\n\n/** Storage and behavior options */\nexport type SlotOptions = {\n /**\n * Name of attribute selector being targeted. Specifying {@link bindingPropertyName} allows for binding to a property\n * of different name. If not specified, the name of the decorated property will be used.\n */\n bindingPropertyName?: string;\n /** Whether to access the element or access only the textContent. */\n nativeElement?: boolean;\n};\n\n/**\n * Internal representation of stored information about element and/or its textContent.\n *\n * @privateRemarks\n * When storing element ({@link SlotOptions.nativeElement} is true), both the element and its textContent is stored.\n * The reason for this is to be able to perform non-destructive interpolation multiple times (that is keep the original,\n * work on a copy).\n *\n * When storing only the element's ({@link SlotOptions.nativeElement} is false), we could still opt to also store the\n * element itself, but it may have performance and/or memory usage implications.\n */\ntype SlotEntry = {\n /**\n * Optional for performance and/or memory reasons\n */\n element?: HTMLElement;\n textContent: string;\n};\n\n/**\n * @param bindingPropertyName Custom property binding name in camel or dash case.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function Slot(bindingPropertyName?: string): (target: unknown, propertyKey: string) => void;\n\n/**\n * Decorator that finds a Vattenfall Element projected node by its attribute name and returns it or its text content.\n *\n * Used for resolving projected content into component class properties without using `@ContentChild` or `@ContentChildren`,\n * however with the following limitations:\n *\n * * If multiple instances of the same custom element exist, the slotted values must be the same for all of them.\n * * Projected nodes that are modified at runtime will not be detected.\n * * Will not work with custom elements created at runtime.\n *\n * You can supply an optional name to use in templates when the component is instantiated, that maps to the name of the\n * bound property. By default, the original name of the bound property is used for input binding.\n *\n * Slot decorator also supports string interpolation. To use string interpolation, you need to wrap the property name in curly braces.\n *\n * @example TextContent extraction using interpolation\n * `We found {count} matches for \"{query}\"`\n * Which will render to:\n * `We found 4 matches for \"value\"`\n * Given that the component (class) has the following properties: `count = 4` and `query = \"value\"`.\n *\n * ```\n * class MyClass {\n * @Slot(\"slotIdentifierName\") slotIdentifierName: string;\n * count = 4;\n * query = \"value\";\n * }\n * ```\n *\n *\n * ```\n * When running in Storybook, extracting elements from the DOM does not (currently) work. In this case, the explicit\n * setters need to be used:\n * ```\n * @example Running in Storybook and using the Slot setter\n * `const anchorElement = document.createElement(\"a\");\n *\n * export const Main: Story = ({ ... }: MyElement) => {\n * return {\n * props: {\n * elementPropertyToBeBoundBySlot1: \"explicit value to use\" // store textContent\n * elementPropertyToBeBoundBySlot2: anchorElement // store element\n * },\n * };\n * };`\n *\n * ```\n * @privateRemarks\n * Either an element or the element's textContent is stored. In both cases, interpolation is supported. In order to be\n * able to run interpolation multiple times, the original textContent is stored, and never modified.\n *\n * When storing the element ({@link SlotOptions.nativeElement} is true), the element and its textContent is stored.\n * When interpolation runs, it will run against the original textContent. The interpolated string will then be the new\n * value of the element's textContent and the element is returned to the caller.\n *\n * When storing the element's textContent ({@link SlotOptions.nativeElement} is false), the same principle holds.\n * Interpolation is performed on the original textContent which is never modified. The interpolated string is returned\n * to the caller.\n * ```\n *\n * @param options {@link SlotOptions}\n *\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function Slot(options?: SlotOptions): (target: unknown, propertyKey: string) => void;\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function Slot(nameOrOptions?: SlotOptions | string) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (target: any, propertyKey: string) => {\n let entry: SlotEntry | undefined;\n const options = resolveSlotOptions(propertyKey, nameOrOptions);\n\n Object.defineProperty(target, propertyKey, {\n get: function () {\n return options.nativeElement ? toElementFromEntry(entry, this) : toTextContentFromEntry(entry, this);\n },\n set: function (value: HTMLElement | string) {\n entry = options.nativeElement ? tryCreateEntryFromElement(options, value) : tryCreateEntryFromTextContent(options, value);\n },\n });\n\n const element =\n getQueryBase().querySelector(`[${options.bindingPropertyName}]`) ??\n getQueryBase().querySelector(`[${camelToDashCase(options.bindingPropertyName)}]`);\n\n if (element) {\n entry = toEntryFromDomElement(element);\n return;\n }\n\n logError(\n `${target.constructor.name}: failed to initialize Slot for property \"${propertyKey}\". ` +\n `No element with attribute \"${kebabToCamelCase(options.bindingPropertyName)}\", ` +\n `or \"${camelToDashCase(options.bindingPropertyName)}\", was found in the DOM`\n );\n };\n}\n\n/**\n * Decorator that finds Vattenfall Element projected nodes by their attribute names and returns them, or their\n * textContents in an array. The Slots decorator is used to resolve multiple projected nodes, *having the same\n * attribute name*, into component class properties as arrays. It is comparable to {@link Slots}, but works\n * with collections.\n *\n * @example\n * Project two span elements, first in an array of HTMLSpanElement, holding the elements themselves, and\n * secondly, in an array of strings, holding the elements' textContent.\n * ```html\n * \n * ${textContent1}\n * ${textContent2}\n * \n * ```\n * ```ts\n * // Will contain two instances of HTMLSpanElement, as nativeElement is true\n * @Slots({ bindingPropertyName: \"domUniqueCamelCaseAttribute\", nativeElement: true })\n * readonly spanElements?: Array;\n *\n * // Will contain two textContent strings, as nativeElement is false\n * @Slots({ bindingPropertyName: \"domUniqueCamelCaseAttribute\", nativeElement: false })\n * readonly textContentArray?: Array;\n *\n *\n * @param slotOptions {@link SlotOptions}\n *\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function Slots(slotOptions?: SlotOptions) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (target: any, propertyKey: string) => {\n let entries: Array = [];\n const options = resolveSlotOptions(propertyKey, slotOptions);\n\n Object.defineProperty(target, propertyKey, {\n get: function () {\n return entries.map((entry) =>\n options.nativeElement ? toElementFromEntry(entry, this) : toTextContentFromEntry(entry, this)\n );\n },\n set: function (values: Array) {\n entries = values.map((value) =>\n options.nativeElement ? tryCreateEntryFromElement(options, value) : tryCreateEntryFromTextContent(options, value)\n );\n },\n });\n\n const camelCased = getQueryBase().querySelectorAll(`[${options.bindingPropertyName}]`);\n if (camelCased.length) {\n entries = Array.from(camelCased).map((element) => toEntryFromDomElement(element as HTMLElement));\n return;\n }\n\n const dashCased = getQueryBase().querySelectorAll(`[${camelToDashCase(options.bindingPropertyName)}]`);\n if (dashCased.length) {\n entries = Array.from(dashCased).map((element) => toEntryFromDomElement(element as HTMLElement));\n return;\n }\n\n logError(\n `${target.constructor.name}: failed to initialize Slots for property \"${propertyKey}\". ` +\n `No element with attribute \"${kebabToCamelCase(options.bindingPropertyName)}\", ` +\n `or \"${camelToDashCase(options.bindingPropertyName)}\", was found in the DOM`\n );\n };\n}\n\n/**\n * Returns the markup to use for finding slotted elements.\n *\n * @privateRemarks\n * We use the story source code to identify slots when running in Storybook. This is because the component is created inside a another component and the projected nodes are removed before we can detect them here otherwise.\n * @returns Base HTML element\n */\n// TODO (stefan): This is not 100%. Problem is that sometimes __STORYBOOK_STORY_STORE__ and sometimes it's not.\n// We can get around this by either 1) put this logic inside the getter or 2) setting the element and entry last in call-stack (by wrapping it in a setTimeout).\n// This will require some code refactoring though to make sure the tests work and I don't feel like doing that right now.\nconst getQueryBase = () => {\n if (isStorybookRuntime) {\n const templateElement = document.createElement(\"template\");\n const source = Object.values(window.__STORYBOOK_STORY_STORE__?._stories)\n .map((story: any) => story?.parameters?.docs?.source?.code ?? \"\")\n .join(\"\");\n templateElement.innerHTML = source;\n return templateElement.content;\n }\n return document.body;\n};\n\n/**\n * Creates a {@link SlotOptions} object.\n * @param propertyName Default property binding name\n * @param nameOrOptions Either {@link SlotOptions} or a custom property binding name\n */\n// TODO (stefan): Consider renaming to getOptions. Also we are exporting internal implementation logic through our public API. Consider refactor test file.\nexport const resolveSlotOptions = (propertyName: string, nameOrOptions?: SlotOptions | string): Required => {\n const optionsObject = typeof nameOrOptions === \"object\" ? nameOrOptions : undefined;\n if (optionsObject) {\n return Object.freeze({\n bindingPropertyName: optionsObject.bindingPropertyName || propertyName,\n nativeElement: optionsObject.nativeElement || false,\n });\n }\n return Object.freeze({\n bindingPropertyName: (nameOrOptions as string) || propertyName,\n nativeElement: false,\n });\n};\n\n/**\n * Extracts element from {@param entry}, interpolates its textContent, and returns the element.\n * @param entry {@link SlotEntry}\n * @param target interpolation value provider, @see {@link interpolate})\n * @returns extracted HTMLElement or undefined, if {@param entry} was undefined\n */\nconst toElementFromEntry = (entry: SlotEntry | undefined, target: unknown): HTMLElement | undefined => {\n if (!entry?.element) return undefined;\n\n const { element, textContent } = entry;\n element.textContent = interpolate(target, textContent);\n return element;\n};\n\n/**\n * Extracts textContent from {@param entry}, interpolates it, and returns the textContent.\n * @param entry {@link SlotEntry}\n * @param target interpolation value provider, @see {@link interpolate})\n * @returns extracted HTMLElement or undefined, if {@param entry} was undefined\n *\n * @param entry\n * @param target\n */\nconst toTextContentFromEntry = (entry: SlotEntry | undefined, target: unknown): string => {\n if (!entry) return \"\";\n\n const { textContent } = entry;\n return interpolate(target, textContent);\n};\n\n/** Creates {@link SlotEntry} from element */\nconst toEntryFromDomElement = (element: HTMLElement): SlotEntry => {\n const textContent = normalizeWhitespace(element.textContent ?? \"\");\n return { element, textContent };\n};\n\n/**\n * Create and returns {@link SlotEntry} from {@link value}, if {@link value} is instance of **HTMLElement**. Otherwise, returns\n * undefined.\n * ```\n * @privateRemarks\n * The purpose of this function is to enforce integrity when explicitly setting a slot: when\n * {@link SlotOptions.nativeElement} is true, then {@link value} must be an instance of HTMLElement.\n */\n// TODO (stefan): Options declared but never used. Investigate reason and remove.\nconst tryCreateEntryFromElement = (options: SlotOptions, value: unknown): SlotEntry | undefined => {\n if (!(value instanceof HTMLElement)) {\n logError(`Can not create entry: option \"nativeElement\" is true, but value ${value} is not instance of HTMLElement`);\n return undefined;\n }\n\n const textContent = normalizeWhitespace(value?.textContent ?? \"\");\n return { element: value, textContent };\n};\n\n/**\n * Create and returns {@link SlotEntry} from {@link value}, if {@link value} is a **string**. Otherwise, returns undefined.\n * ```\n * @privateRemarks\n * The purpose of this function is to enforce integrity when explicitly setting a slot: when\n * {@link SlotOptions.nativeElement} is false, then {@link value} must be a string.\n */\n// TODO (stefan): Options declared but never used. Investigate reason and remove.\nconst tryCreateEntryFromTextContent = (options: SlotOptions, value: unknown): SlotEntry | undefined => {\n if (typeof value !== \"string\") {\n logError(`Can not create entry: option \"nativeElement\" is false, but value ${value} is not of type string`);\n return undefined;\n }\n return { textContent: normalizeWhitespace(value ?? \"\") };\n};\n\n/** Regex pattern that matches tabs */\nconst TABS_PATTERN = /\\t/g;\n\n/** Regex patterns that matches multiple (two or more) spaces */\nconst MULTIPLE_SPACES_PATTERN = /\\s{2,}/g;\n\n/**\n * Normalizes whitespace in {@link value} by removing tabs and replacing multiple spaces with single spaces\n * @param value\n */\n// TODO (stefan): Consider renaming, i.e. getTextContent\nconst normalizeWhitespace = (value: string) => value.replace(TABS_PATTERN, \"\").replace(MULTIPLE_SPACES_PATTERN, \" \").trim();\n\n/** Regex pattern that matches tokens (\"{ token }\") enclosed in curly braces and captures the value (\"token\") within the curly braces. */\nconst INTERPOLATION_PATTERN = /{(.*?)}/g;\n\n/**\n * Interpolates dynamic values into {@link value}, a string that may or may not contain interpolation placeholders.\n * Interpolation placeholders are on the form \"{ valueToBeReplaced }\" where \"valueToBeReplaced\" is a property name that\n * {@link target} is expected to define. If the string does not contain any placeholders the original string is returned\n * unmodified. If no property accessor can be found, an error is printed. Interpolation runs using \"best effort\",\n * replacing what can be replaced; skipping what can't.\n *\n * Interpolation depends on a (target) instance, therefore statics are not supported.\n *\n * @param target Class that is expected to define a property accessor for each interpolation placeholder.\n * @param value The string on which interpolation should be performed\n */\n// TODO (stefan): Consider renaming, i.e. getInterpolatedTextContent\nconst interpolate = (target: any, value: string) => {\n let interpolated = value;\n Array.from(value.matchAll(INTERPOLATION_PATTERN)).forEach(([placeholder, capture]) => {\n const propertyName = capture.trim();\n if (propertyName in target) interpolated = interpolated.replace(placeholder, target[propertyName]);\n else\n logError(\n `Failed to interpolate value for placeholder \"${placeholder}\" into \"${value}\": ` +\n `required property \"get ${propertyName}()\" not found on class \"${target.constructor.name}\".`\n );\n });\n return interpolated;\n};\n","import { ɵmarkDirty as markDirty } from \"@angular/core\";\n\nimport { logError } from \"../functions\";\nimport { StateModel } from \"../store\";\n\n/**\n * A viewstate is a visual manifestation of a component as rendered in view.\n *\n * **Example**\n *\n * ```typescript\n * {\n * loading: {\n * action: \"loading\"\n * },\n * completed: {\n * action: \"completed\",\n * timeTariff: 1234\n * }\n * }\n * ```\n */\nexport type Viewstates = Record>;\n\n/**\n * Decorator that dispatches a viewstate when its bound property value has changed\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function Viewstate(viewstates: Viewstates) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (target: any, propertyKey: string) {\n let previousViewstate: string;\n Object.defineProperty(target, propertyKey, {\n get: () => previousViewstate,\n set: function (nextViewstate: string) {\n if (nextViewstate && previousViewstate !== nextViewstate) {\n if (!viewstates[nextViewstate])\n return logError(\n `Cannot dispatch the viewstate '${nextViewstate}' since it does not exist in '${target.constructor.name}'.`\n );\n if (!viewstates[nextViewstate].action)\n return logError(\n `Cannot dispatch the viewstate '${nextViewstate}' in '${target.constructor.name}' since it does not have an 'action' property.`\n );\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const ctx = this;\n Object.entries(viewstates[nextViewstate]).forEach(([key, value]) => {\n ctx[key] = value;\n markDirty(ctx);\n });\n }\n previousViewstate = nextViewstate;\n },\n });\n };\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { HTTP_INTERCEPTORS, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\n\nimport { Observable, of } from \"rxjs\";\nimport { tap } from \"rxjs/operators\";\n\n@Injectable()\nexport class HttpCacheInterceptor implements HttpInterceptor {\n private cache: Map> = new Map();\n private cacheUrlList: Array = [\"my-consumption\"];\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\n /* Cache backend response for unique url in key-value pair \n example: { key: https://domain/somePath, \n value: HttpResponse({ key1: value1, key2: value2 }) }\n */\n if (request.method === \"GET\" && this.isUrlInCacheList(request.url)) {\n const cachedResponse = this.cache.get(request.urlWithParams);\n return cachedResponse ? of(cachedResponse) : this.handleRequest(request, next);\n }\n /* If new set of data has been update/deleted for same backend api url, then delete \n the key(url) from cached map object. So next GET request could fetch updated data */\n if ([\"POST\", \"PUT\", \"DELETE\", \"PATCH\"].includes(request.method) && this.cache.has(request.urlWithParams))\n this.cache.delete(request.urlWithParams);\n return next.handle(request);\n }\n\n handleRequest(request: HttpRequest, next: HttpHandler): Observable> {\n return next.handle(request).pipe(\n tap((stateEvent) => {\n if (stateEvent instanceof HttpResponse) {\n this.cache.set(request.urlWithParams, stateEvent.clone());\n }\n })\n );\n }\n\n isUrlInCacheList(requestUrl: string) {\n return this.cacheUrlList.filter((cachedUrl) => requestUrl.includes(cachedUrl)).length > 0;\n }\n}\n\nexport const httpCacheInterceptorProvider = {\n provide: HTTP_INTERCEPTORS,\n useClass: HttpCacheInterceptor,\n multi: true,\n};\n","import { HTTP_INTERCEPTORS, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\n\n@Injectable()\nexport class CookieInterceptor implements HttpInterceptor {\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\n const newRequest = request.clone({\n withCredentials: true,\n /**\n * We need to clear the cache, and set expires to a past date because of a bug in IE11.\n * IE11 caches the last call to the Self Service API and returns the same results as the previous login\n * So in case you login with two different customers, the second login will show the same contract as the first login.\n * By setting no-cache, we make lazy IE11 call every time and do its job.\n */\n headers: request.headers\n .set(\"Cache-Control\", \"no-cache\")\n .set(\"Pragma\", \"no-cache\")\n .set(\"Expires\", \"Thu, 01 Jan 1970 00:00:00 GMT\")\n .set(\"If-Modified-Since\", \"0\"),\n });\n return next.handle(newRequest);\n }\n}\nexport const cookieInterceptorProvider = {\n provide: HTTP_INTERCEPTORS,\n useClass: CookieInterceptor,\n multi: true,\n};\n","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from \"@angular/common/http\";\nimport { isNullable } from \"@vattenfall/util\";\nimport { Observable, of, throwError } from \"rxjs\";\nimport { delay } from \"rxjs/operators\";\n\n/**\n * The default service response delay time expressed in milliseconds\n */\nconst SERVICE_DELAY_TIME = 500;\n\n/**\n * TODO (stefan): Check if and where this is referenced, if not then it could be removed.\n * Simulate HTTP response\n * @param status HTTP response status code\n * @param body HTTP response body\n * @return HTTP response\n */\nexport function httpResponseSimulation(status: number, body?: T) {\n if (status >= 200 && status <= 300)\n return of(new HttpResponse({ status, body })).pipe(delay(SERVICE_DELAY_TIME)) as unknown as Observable>;\n else\n return throwError(new HttpErrorResponse({ status })).pipe(delay(SERVICE_DELAY_TIME)) as unknown as Observable>;\n}\n\n/**\n * Mockup object as passed to `MockupHttpInterceptor`\n */\nexport interface Mockup {\n /**\n * Base endpoint URL path (should start with '/'), may contain parameters, i.e. `:premiseId` and query parameters i.e. `someParam=someValue`.\n */\n pathMatcher: string;\n /**\n * Delay response time in milliseconds\n */\n delay: number;\n /**\n * Array of data objects showing different possible variations of mockup data\n */\n data: Array;\n /**\n * Limits the size of the returned list of data in case multiple items are found in a single request.\n */\n limit?: number;\n}\n\n/**\n * HTTP status code\n */\nexport enum HttpStatusCode {\n Success = 200,\n BadRequest = 400,\n Unauthorized = 401,\n NotFound = 404,\n MethodNotAllowed = 422,\n ServerError = 500,\n}\n\n/**\n * The request parameters represented as a key-value object\n */\nexport type Params = { [param: string]: string };\n\n/**\n * Intercepts requests and returns mockup data as response.\n *\n * You may override the `onGet`, `onGetAll`, `onPost`, `onPut` and `onDelete` request handlers in your child class to better match the actual endpoint behaviour.\n *\n * This will override the `onDelete` method and return `422 Method Not Allowed` on all requests made to this endpoint with the method `DELETE`:\n *\n * ```typescript\n * onDelete() {\n * return super.httpResponse(HttpStatusCode.MethodNotAllowed)\n * }\n * ```\n */\nexport class MockupHttpInterceptor implements HttpInterceptor {\n constructor(public mockup: Mockup) {\n if (!this.mockup.pathMatcher)\n throw new Error(\n `[ Vattenfall Elements ] Could not initialize 'MockupHttpInterceptor'. 'pathMatcher' property is undefined.`\n );\n if (!this.mockup.pathMatcher.startsWith(\"/\"))\n throw new Error(\n `[ Vattenfall Elements ] Could not initialize 'MockupHttpInterceptor'. 'pathMatcher' property needs to start with '/'.`\n );\n if (!this.mockup.data.length)\n throw new Error(`[ Vattenfall Elements ] Could not initialize 'MockupHttpInterceptor'. 'data' array is empty.`);\n }\n\n /**\n * Intercept HTTP request and return appropriate HTTP response\n * @param request HTTP request object\n */\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\n const { method, url, body } = request;\n if (!this.matchUrlPath(this.mockup.pathMatcher, url)) return next.handle(request);\n\n const params = this.parseParams(this.mockup.pathMatcher, url);\n\n switch (method) {\n case \"GET\": {\n return this.onGet(params);\n }\n case \"POST\": {\n return this.onPost(body);\n }\n case \"PUT\": {\n return this.onPut(body, params);\n }\n case \"DELETE\": {\n return this.onDelete(params);\n }\n // Method Not Allowed\n default:\n return this.httpResponse(HttpStatusCode.MethodNotAllowed);\n }\n }\n\n /**\n * Simulate HTTP response\n * @param status HTTP response status code\n * @param body HTTP response body\n */\n protected httpResponse(status: number, body?: T | Array | null) {\n if (status >= 200 && status <= 300)\n return of(new HttpResponse({ status, body })).pipe(delay(this.mockup.delay)) as Observable>;\n else {\n return throwError(\n new HttpErrorResponse({\n error: `Error ${status}`,\n status,\n })\n ).pipe(delay(this.mockup.delay)) as Observable>;\n }\n }\n\n /**\n * Get request handler\n * @param param Parameter holding the key and value to query the data.\n */\n protected onGet(params?: Params) {\n const payload = this.mockup.data.filter(this.matchIdentifier(params));\n if (payload.length === 1 || this.mockup.limit === 1) return this.httpResponse(HttpStatusCode.Success, payload[0]);\n else if (payload.length > 1)\n return this.httpResponse(HttpStatusCode.Success, payload.slice(0, this.mockup.limit || payload.length));\n else return this.httpResponse(HttpStatusCode.NotFound, payload);\n }\n\n /**\n * Post request handler\n * @param payload the payload to update the item.\n */\n protected onPost(payload: T | null) {\n if (isNullable(payload)) return this.httpResponse(HttpStatusCode.BadRequest, payload);\n else {\n // Casting as T since TypeScript compiler doesn't seem to understand 'isNullable'\n this.mockup.data = [...this.mockup.data, payload as T];\n return this.httpResponse(HttpStatusCode.Success, payload);\n }\n }\n\n /**\n * Put request handler\n * @param param key, value parameter to query the data\n * @param payload the payload to update the item.\n */\n protected onPut(payload?: T | null, params?: Params) {\n if (isNullable(payload) || isNullable(params)) return this.httpResponse(HttpStatusCode.BadRequest, payload);\n else if (this.mockup.data.some(this.matchIdentifier(params))) {\n this.mockup.data = this.mockup.data.map((item) =>\n this.matchIdentifier(params)(item) ? Object.assign(item as Record, payload) : item\n );\n return this.httpResponse(HttpStatusCode.Success, payload);\n } else return this.httpResponse(HttpStatusCode.NotFound, payload);\n }\n\n /**\n * Delete request handler\n * @param param parameter with key, value to query and delete the item in the data.\n */\n protected onDelete(params?: Params) {\n if (this.mockup.data.some(this.matchIdentifier(params))) {\n this.mockup.data = this.mockup.data.filter(this.matchIdentifier(params));\n return this.httpResponse(HttpStatusCode.Success);\n } else return this.httpResponse(HttpStatusCode.NotFound);\n }\n\n /**\n * Match provided resource identifiers or query parameters against data items in `mockup` array. Will match data items which does not contain properties that might be specified in `params`.\n * @param parameters\n */\n protected matchIdentifier(params: Params = {}) {\n return (item: T) =>\n Object.entries(params)\n // Testing for loose equality to match numeric values cast as strings, i.e. \"123\"\n .reduce(\n (match, [key, value]) =>\n !(item as Record)[key] || (item as Record)[key] == value ? match && true : false,\n true\n );\n }\n\n /**\n * Compares request URL with specified path matcher string\n * @param pathMatcher path matcher pattern to compare to the url\n * @param url url for the current request.\n */\n protected matchUrlPath(pathMatcher: string, url: string) {\n const matcherSegments = pathMatcher.split(\"/\");\n const urlSegments = new URL(url, \"https://localhost:4200\").pathname.split(\"/\");\n // Do not match URL's that have more segments than declared in pathMatcher\n if (matcherSegments.length < urlSegments.length) return false;\n // Do not match if unknown of the URL segments does not match the segments in pathMatcher\n for (let index = 0; index < matcherSegments.length; index++) {\n if (!matcherSegments[index].startsWith(\":\")) if (matcherSegments[index] !== urlSegments[index]) return false;\n }\n return true;\n }\n\n /**\n * Takes an URL and parse it against a matching string. Returns an object with the resource name or query parameter name as key and resource identifier query parameter value as value.\n * @param pathMatcher path matcher pattern to compare to the url\n * @param url url for the request\n *\n * **Example**\n *\n * This input:\n *\n * * pathMatcher: `component/:componentId`\n * * url: `component/123&queryParam=abc`\n *\n * Will give this output:\n *\n * ```\n * { componentId: \"123\", queryParam: \"abc\" }\n * ```\n */\n protected parseParams(pathMatcher: string, url: string): Params {\n const urlSegments = new URL(url, \"https://localhost:4200\").pathname\n .split(\"/\")\n .map((path, index) => [new URL(pathMatcher, \"https://localhost:4200\").pathname.split(\"/\")[index].replace(\":\", \"\"), path])\n .filter(([key, value]) => key !== value);\n\n const urlSearchParams = Array.from(new URLSearchParams(new URL(url, \"https://localhost:4200\").searchParams).entries());\n\n if (urlSegments.length || urlSearchParams.length) return Object.fromEntries([...urlSegments, ...urlSearchParams]) as Params;\n return {};\n }\n}\n","import { CommonModule, DatePipe, DecimalPipe } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\n\nimport { DateRangePipe } from \"./date-range.pipe\";\nimport { MonthPipe } from \"./month.pipe\";\nimport { PickAllPipe } from \"./pick-all.pipe\";\nimport { RelativeTimeFormatPipe } from \"./relative-time-format.pipe\";\nimport { UnitPipe } from \"./unit.pipe\";\n\n@NgModule({\n declarations: [UnitPipe, DateRangePipe, RelativeTimeFormatPipe, PickAllPipe, MonthPipe],\n imports: [CommonModule],\n exports: [UnitPipe, DateRangePipe, RelativeTimeFormatPipe, PickAllPipe, DatePipe, MonthPipe],\n providers: [DecimalPipe, DatePipe],\n})\nexport class PipesModule {}\n","import { Subject, AnonymousSubject } from '../../Subject';\nimport { Subscriber } from '../../Subscriber';\nimport { Observable } from '../../Observable';\nimport { Subscription } from '../../Subscription';\nimport { ReplaySubject } from '../../ReplaySubject';\nconst DEFAULT_WEBSOCKET_CONFIG = {\n url: '',\n deserializer: (e) => JSON.parse(e.data),\n serializer: (value) => JSON.stringify(value),\n};\nconst WEBSOCKETSUBJECT_INVALID_ERROR_OBJECT = 'WebSocketSubject.error must be called with an object with an error code, and an optional reason: { code: number, reason: string }';\nexport class WebSocketSubject extends AnonymousSubject {\n constructor(urlConfigOrSource, destination) {\n super();\n if (urlConfigOrSource instanceof Observable) {\n this.destination = destination;\n this.source = urlConfigOrSource;\n }\n else {\n const config = this._config = Object.assign({}, DEFAULT_WEBSOCKET_CONFIG);\n this._output = new Subject();\n if (typeof urlConfigOrSource === 'string') {\n config.url = urlConfigOrSource;\n }\n else {\n for (let key in urlConfigOrSource) {\n if (urlConfigOrSource.hasOwnProperty(key)) {\n config[key] = urlConfigOrSource[key];\n }\n }\n }\n if (!config.WebSocketCtor && WebSocket) {\n config.WebSocketCtor = WebSocket;\n }\n else if (!config.WebSocketCtor) {\n throw new Error('no WebSocket constructor can be found');\n }\n this.destination = new ReplaySubject();\n }\n }\n lift(operator) {\n const sock = new WebSocketSubject(this._config, this.destination);\n sock.operator = operator;\n sock.source = this;\n return sock;\n }\n _resetState() {\n this._socket = null;\n if (!this.source) {\n this.destination = new ReplaySubject();\n }\n this._output = new Subject();\n }\n multiplex(subMsg, unsubMsg, messageFilter) {\n const self = this;\n return new Observable((observer) => {\n try {\n self.next(subMsg());\n }\n catch (err) {\n observer.error(err);\n }\n const subscription = self.subscribe(x => {\n try {\n if (messageFilter(x)) {\n observer.next(x);\n }\n }\n catch (err) {\n observer.error(err);\n }\n }, err => observer.error(err), () => observer.complete());\n return () => {\n try {\n self.next(unsubMsg());\n }\n catch (err) {\n observer.error(err);\n }\n subscription.unsubscribe();\n };\n });\n }\n _connectSocket() {\n const { WebSocketCtor, protocol, url, binaryType } = this._config;\n const observer = this._output;\n let socket = null;\n try {\n socket = protocol ?\n new WebSocketCtor(url, protocol) :\n new WebSocketCtor(url);\n this._socket = socket;\n if (binaryType) {\n this._socket.binaryType = binaryType;\n }\n }\n catch (e) {\n observer.error(e);\n return;\n }\n const subscription = new Subscription(() => {\n this._socket = null;\n if (socket && socket.readyState === 1) {\n socket.close();\n }\n });\n socket.onopen = (e) => {\n const { _socket } = this;\n if (!_socket) {\n socket.close();\n this._resetState();\n return;\n }\n const { openObserver } = this._config;\n if (openObserver) {\n openObserver.next(e);\n }\n const queue = this.destination;\n this.destination = Subscriber.create((x) => {\n if (socket.readyState === 1) {\n try {\n const { serializer } = this._config;\n socket.send(serializer(x));\n }\n catch (e) {\n this.destination.error(e);\n }\n }\n }, (e) => {\n const { closingObserver } = this._config;\n if (closingObserver) {\n closingObserver.next(undefined);\n }\n if (e && e.code) {\n socket.close(e.code, e.reason);\n }\n else {\n observer.error(new TypeError(WEBSOCKETSUBJECT_INVALID_ERROR_OBJECT));\n }\n this._resetState();\n }, () => {\n const { closingObserver } = this._config;\n if (closingObserver) {\n closingObserver.next(undefined);\n }\n socket.close();\n this._resetState();\n });\n if (queue && queue instanceof ReplaySubject) {\n subscription.add(queue.subscribe(this.destination));\n }\n };\n socket.onerror = (e) => {\n this._resetState();\n observer.error(e);\n };\n socket.onclose = (e) => {\n this._resetState();\n const { closeObserver } = this._config;\n if (closeObserver) {\n closeObserver.next(e);\n }\n if (e.wasClean) {\n observer.complete();\n }\n else {\n observer.error(e);\n }\n };\n socket.onmessage = (e) => {\n try {\n const { deserializer } = this._config;\n observer.next(deserializer(e));\n }\n catch (err) {\n observer.error(err);\n }\n };\n }\n _subscribe(subscriber) {\n const { source } = this;\n if (source) {\n return source.subscribe(subscriber);\n }\n if (!this._socket) {\n this._connectSocket();\n }\n this._output.subscribe(subscriber);\n subscriber.add(() => {\n const { _socket } = this;\n if (this._output.observers.length === 0) {\n if (_socket && _socket.readyState === 1) {\n _socket.close();\n }\n this._resetState();\n }\n });\n return subscriber;\n }\n unsubscribe() {\n const { _socket } = this;\n if (_socket && _socket.readyState === 1) {\n _socket.close();\n }\n this._resetState();\n super.unsubscribe();\n }\n}\n","import { Injectable } from \"@angular/core\";\n\nimport { Observable } from \"rxjs\";\nimport { webSocket, WebSocketSubject } from \"rxjs/webSocket\";\n\nimport { logError } from \"../functions\";\n\n/**\n * Establishes a WebSocket connection as an RxJS observable.\n *\n * **Example**\n *\n * ```typescript\n * ...\n * constructor(private webSocketService: WebSocketService) {\n * // Make sure to connect before calling send or close\n * webSocketService.connect(\"ws://...\");\n * }\n * ```\n */\n@Injectable({\n providedIn: \"root\",\n})\nexport class WebSocketService {\n /** Stream of messages received through WebSocket. */\n get messages(): Observable | undefined {\n return this.$webSocket?.asObservable();\n }\n\n private $webSocket?: WebSocketSubject;\n\n /** Connects to WebSocket. */\n connect(url: string) {\n this.$webSocket = webSocket(url);\n }\n\n /** Closes the connection. */\n close() {\n if (!this.$webSocket) logError(\"No websocket connection. The 'close' method was called before calling 'connect'.\");\n else this.$webSocket?.complete();\n }\n\n /** Enqueues data to be transmitted. */\n send(payload: T) {\n if (!this.$webSocket) logError(\"No websocket connection. The 'send' method was called before calling 'connect'.\");\n else this.$webSocket?.next(payload);\n }\n}\n","import { WebSocketSubject } from './WebSocketSubject';\nexport function webSocket(urlConfigOrSource) {\n return new WebSocketSubject(urlConfigOrSource);\n}\n","import { Inject, Injectable, Optional } from \"@angular/core\";\nimport { Actions } from \"@ngxs/store\";\nimport { filter, map } from \"rxjs/operators\";\n\nimport { ENVIRONMENT, Environment } from \"../elements\";\n\n/**\n * Declaring custom attribute `dataLayer` on the `Window` object.\n */\ndeclare global {\n interface Window {\n /**\n * The data layer is an array of objects used to pass information from a website to your Google Tag Manager container.\n *\n * It is essentially a message bus for web site data such as product data, user interaction data, marketing campaign information, transaction data, etc. and the web site external data processing services.\n */\n dataLayer: EventLike[];\n }\n}\n\n/**\n * The type describing an event like object as dispatched to the data layer\n */\n// eslint-disable-next-line @typescript-eslint/ban-types, @typescript-eslint/no-explicit-any\ntype EventLike = { event?: string; [key: string]: Exclude };\n\n/**\n * Dispatches events through the data layer to a Google Tag Manager container.\n *\n * The data layer is an array of objects used to pass information from a website to external services.\n *\n * It is essentially a message bus for web site data such as product data, user interaction data, marketing campaign information, transaction data, etc. and the web site external data processing services.\n */\n@Injectable({\n providedIn: \"root\",\n})\nexport class DataLayerService {\n constructor(\n @Optional()\n @Inject(ENVIRONMENT)\n protected environment: Environment,\n @Optional()\n private actions?: Actions\n ) {\n // Sets a data layer property on the window object\n window.dataLayer = window.dataLayer || [];\n // Dispatch an elements initialized event\n this.dispatch({ event: \"Elements@Initialized\", ...environment });\n // If actions has been provided then tap into the actions stream\n if (this.actions)\n // Dispatch every time an action has been dispatched\n this.actions\n .pipe(\n // Ignore failed or canceled actions\n filter(({ status }) => status === \"SUCCESSFUL\"),\n // Ignore system actions\n filter(({ action }) => !action.constructor.type.startsWith(\"@@\")),\n // Map to a standard event object\n map(({ action }) => {\n // Turns an action type string and turns it into an event string: [ TheElementClassName ] NameOfAction > TheElementClassName.NameOfAction\n const eventName = action.constructor.type.replace(/ /g, \"\").replace(\"[\", \"\").replace(\"]\", \".\");\n return { event: `Elements@${eventName}`, ...action };\n }),\n // Ignore empty events\n filter((event) => event != null)\n // Dispatch action as event\n )\n .subscribe(this.dispatch);\n }\n\n /**\n * Data model for dispatching enhanced ecommerce field objects\n */\n public ecommerce = new Ecommerce();\n\n /**\n * Dispatches an event to the data layer\n * @param event An event object (should typically have an `event` property but it is not required)\n */\n public dispatch(event: EventLike) {\n // Prefix the event name with Elements namespace\n if (event.event && !event.event.startsWith(\"Elements@\")) event.event = `Elements@${event.event}`;\n // Dispatch the event to the data layer\n window.dataLayer.push(event);\n // Return the service to enable method chaining\n return this as unknown as DataLayerService;\n }\n}\n\n/**\n * The interface describing a custom dimensions that can be sent along a Google Analytics event.\n * Must be named `dimension` followed by an integer value, i.e. `dimension1`.\n */\nexport interface Dimension {\n [dimensionN: string]: unknown;\n}\n\n/**\n * The interface describing a custom metric that can be sent along a Google Analytics event.\n * Must be named `metric` followed by an integer value, i.e. `metric1`.\n */\nexport interface Metric {\n [metricN: string]: unknown;\n}\n\n/**\n * The interface describing information about an ecommerce related action that took place.\n */\nexport interface EcommerceAction {\n /**\n * Transaction ID\n */\n id?: string;\n /**\n * Affiliation from which this transaction accurred\n */\n affiliation?: string;\n /**\n * Total revenue associated with the transaction\n */\n revenue?: number;\n /**\n * Tax associated with the transaction\n */\n tax?: number;\n /**\n * Shipping cost associated with the transaction\n */\n shipping?: number;\n /**\n * Transaction coupon redeemed with transaction\n */\n coupon?: string;\n /**\n * list that the associated product belongs to\n */\n list?: string;\n /**\n * Number representing step in the checkout process\n */\n step?: number;\n /**\n * Additional field for checkout and checkout_option actions that can describe option information on the checkout page\n */\n option?: string;\n}\n\n/**\n * The interface describing information about a product that has been viewed\n */\nexport interface EcommerceImpression extends Partial {\n /**\n * Product ID or SKU\n */\n id: string;\n /**\n * Name of the product\n */\n name: string;\n /**\n * List or collection to which the product belongs\n */\n list?: string;\n /**\n * Brand associated with the product\n */\n brand?: string;\n /**\n * Category to which product belongs\n */\n category?: string;\n /**\n * Variant of the product\n */\n variant?: string;\n /**\n * Product's position in a list or collection\n */\n position?: number;\n /**\n * Price of the product\n */\n price?: number;\n}\n\n/**\n * The interface describing information about individual products that has been viewed, added to the shopping cart, etc.\n */\nexport interface EcommerceProduct extends Partial {\n /**\n * The product ID or SKU\n */\n id: string;\n /**\n * The name of the product\n */\n name: string;\n /**\n * The brand associated with the product\n */\n brand?: string;\n /**\n * The category to which the product belongs (e.g. Apparel). Use / as a delimiter to specify up to 5-levels of hierarchy (e.g. Apparel/Men/T-Shirts).\n */\n category?: string;\n /**\n * The variant of the product\n */\n variant?: string;\n /**\n * The price of a product\n */\n price?: number;\n /**\n * The quantity of a product\n */\n quantity?: number;\n /**\n * The coupon code associated with a product (e.g. SUMMER_SALE13)\n */\n coupon?: string;\n /**\n * \tThe product's position in a list or collection\n */\n position?: number;\n}\n\n/**\n * The interface describing information about promotion that has been viewed.\n */\nexport interface EcommercePromotion extends Partial {\n /**\n * Promotion ID\n */\n id: string;\n /**\n * Name of the promotion\n */\n name: string;\n /**\n * Creative associated with the promotion\n */\n creative?: string;\n /**\n * Position of the creative\n */\n position?: number;\n}\n\n/**\n * `Ecommerce` specify how to interpret product and promotion data that you send to Google Analytics.\n */\nclass Ecommerce {\n /**\n * Holds the last pushed impression\n */\n public impressionFieldObject?: EcommerceImpression;\n /**\n * Holds the last pushed product\n */\n public productFieldObject?: EcommerceProduct;\n /**\n * Holds the last pushed promotion\n */\n public promotionFieldObject?: EcommercePromotion;\n\n /**\n * An impression of a for one or more products.\n * @param impression Product impression field object\n */\n impression(impression: EcommerceImpression) {\n window.dataLayer.push({\n event: \"Elements@Ecommerce.Impression\",\n ecommerce: {\n impressions: [impression],\n },\n });\n this.impressionFieldObject = impression;\n return Ecommerce as unknown as Ecommerce;\n }\n\n /**\n * A click on a product or product link for one or more products.\n * @param product Product field object\n * @param action Action field object\n */\n click(product: EcommerceProduct, action?: EcommerceAction) {\n window.dataLayer.push({\n event: \"Elements@Ecommerce.Click\",\n ecommerce: {\n click: {\n actionField: action,\n products: [product],\n },\n },\n });\n this.productFieldObject = product;\n return Ecommerce as unknown as Ecommerce;\n }\n\n /**\n * A view of product details.\n * @param product Product field object\n * @param action Action field object\n */\n detail(product: EcommerceProduct, action?: EcommerceAction) {\n window.dataLayer.push({\n event: \"Elements@Ecommerce.Detail\",\n ecommerce: {\n detail: {\n actionField: action,\n products: [product],\n },\n },\n });\n this.productFieldObject = product;\n return Ecommerce as unknown as Ecommerce;\n }\n\n /**\n * Adding one or more products to a shopping cart.\n * @param product Product field object\n * @param action Action field object\n */\n add(product: EcommerceProduct, action?: EcommerceAction) {\n window.dataLayer.push({\n event: \"Elements@Ecommerce.Add\",\n ecommerce: {\n add: {\n actionField: action,\n products: [product],\n },\n },\n });\n this.productFieldObject = product;\n return Ecommerce as unknown as Ecommerce;\n }\n\n /**\n * Remove one or more products from a shopping cart.\n * @param product Product field object\n * @param action Action field object\n */\n remove(product: EcommerceProduct, action?: EcommerceAction) {\n window.dataLayer.push({\n event: \"Elements@Ecommerce.Remove\",\n ecommerce: {\n remove: {\n actionField: action,\n products: [product],\n },\n },\n });\n this.productFieldObject = product;\n return Ecommerce as unknown as Ecommerce;\n }\n\n /**\n * Initiating the checkout process for one or more products.\n * @param product Product field object\n * @param action Action field object\n */\n checkout(product: EcommerceProduct, action?: EcommerceAction) {\n window.dataLayer.push({\n event: \"Elements@Ecommerce.Checkout\",\n ecommerce: {\n checkout: {\n actionField: action,\n products: [product],\n },\n },\n });\n this.productFieldObject = product;\n return Ecommerce as unknown as Ecommerce;\n }\n\n /**\n * Sending the option value for a given checkout step.\n * @param action Action field object\n */\n checkoutOption(action: EcommerceAction) {\n window.dataLayer.push({\n event: \"Elements@Ecommerce.CheckoutOption\",\n ecommerce: {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n checkout_option: {\n actionField: action,\n },\n },\n });\n }\n\n /**\n * The sale of one or more products.\n * @param product Product field object\n * @param transactionId The order transaction identifier\n * @param action Action field object\n */\n purchase(product: EcommerceProduct, transactionId: string | number, action?: EcommerceAction) {\n window.dataLayer.push({\n event: \"Elements@Ecommerce.Purchase\",\n ecommerce: {\n purchase: {\n actionField: {\n ...action,\n id: transactionId,\n },\n products: [product],\n },\n },\n });\n this.productFieldObject = product;\n return Ecommerce as unknown as Ecommerce;\n }\n\n /**\n * The refund of one or more products.\n * @param product Product field object\n * @param transactionId The order transaction identifier\n * @param action Action field object\n */\n refund(product: EcommerceProduct, transactionId: string | number, action?: EcommerceAction) {\n window.dataLayer.push({\n event: \"Elements@Ecommerce.Refund\",\n ecommerce: {\n refund: {\n actionField: {\n ...action,\n id: transactionId,\n },\n products: [product],\n },\n },\n });\n this.productFieldObject = product;\n return Ecommerce as unknown as Ecommerce;\n }\n\n /**\n * A click on an internal promotion.\n * @param promotion Promotion field object\n */\n promoClick(promotion: EcommercePromotion) {\n window.dataLayer.push({\n event: \"Elements@Ecommerce.PromoClick\",\n ecommerce: {\n promoClick: {\n promotions: [promotion],\n },\n },\n });\n this.promotionFieldObject = promotion;\n return Ecommerce as unknown as Ecommerce;\n }\n\n /**\n * An impression of an internal promotion.\n * @param promotion Promotion field object\n */\n promoView(promotion: EcommercePromotion) {\n window.dataLayer.push({\n event: \"Elements@Ecommerce.PromoView\",\n ecommerce: {\n promoView: {\n promotions: [promotion],\n },\n },\n });\n this.promotionFieldObject = promotion;\n return Ecommerce as unknown as Ecommerce;\n }\n}\n","import { Injectable } from \"@angular/core\";\n\n/**\n * Creates a blob file from string and provides it as a downloadable object.\n *\n * Requires that a file MIME-type is specified, e.g. `text/csv` or `application/json`.\n */\n@Injectable({\n providedIn: \"root\",\n})\nexport class FileDownloadService {\n /**\n * Creates a file blob, downloads it and deletes it from memory.\n * @param fileContent File content as string\n * @param type File MIME-type, e.g. text/csv\n * @param fileName Name of file. If omitted a unique hash will be used.\n */\n download(fileContent: string, type: string, fileName?: string) {\n // Create temporary anchor tag\n const anchorElement = document.createElement(\"a\");\n // We use `\\ufeff` to signify any number of encoding.\n // It takes the `\\ufeff` marker and converts it into the correct byte order mark based on charset\n const blob = new Blob([\"\\ufeff\", fileContent], { type });\n // Create DOMString containing url represented as a blob\n const href = window.URL.createObjectURL(blob);\n // Register attribute with URL and file name\n anchorElement.href = href;\n if (fileName) anchorElement.download = fileName;\n anchorElement.click();\n // Revoking downloadable object let the browser know not to keep the reference to the file any longer.\n window.URL.revokeObjectURL(href);\n // Remove temporary anchor tag from document\n anchorElement.remove();\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { ReplaySubject } from \"rxjs\";\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class GlobalStoreService {\n get store() {\n return this.$store.asObservable();\n }\n\n get snapshot() {\n return Object.freeze(this.getGlobalStore()) as T;\n }\n\n private $store: ReplaySubject = new ReplaySubject(0);\n private _globalStoreEvent = new Event(\"globalStore\");\n\n constructor() {\n this.$store.next(this.getGlobalStore());\n document.addEventListener(\"globalStore\", () => {\n this.$store.next(this.getGlobalStore());\n });\n }\n\n dispatch(key: keyof T, value: unknown) {\n this.$store.next(this.getGlobalStore());\n this.setGlobalStore(key, value);\n document.dispatchEvent(this._globalStoreEvent);\n }\n\n private getGlobalStore() {\n return JSON.parse(sessionStorage.getItem(\"VattenfallElementsGlobalStore\") ?? \"{}\");\n }\n\n private setGlobalStore(key: keyof T, value: unknown) {\n sessionStorage.setItem(\"VattenfallElementsGlobalStore\", JSON.stringify({ ...this.getGlobalStore(), [key]: value }));\n }\n}\n","import { AfterViewInit, Directive, ElementRef, Input, OnDestroy, SecurityContext } from \"@angular/core\";\nimport { DomSanitizer } from \"@angular/platform-browser\";\nimport { fromEvent, merge, Observable, Subscription } from \"rxjs\";\nimport { filter, map, startWith } from \"rxjs/operators\";\n\n/**\n * Global map to hold all slot elements as observables, the host element is the namespace of the shadow subtree that the slot element is attached to, and the nested map contains a reference to the original slot element's slotchange event target element.\n */\nexport const slotMap = new Map>>();\n\n/**\n * This directive creates copies of a slot's assigned elements and inserts those after all other slot element with the same reference.\n *\n * By design, the Shadow DOM will only insert an assigned element once and then destroys all other slot elements when the first instance has been determent. This is a problem when repeating a slot, for example in an `*ngFor` loop where only the first instance will be assigned. This directive solves this issue.\n *\n * **isStatic**\n *\n * For performance reasons, slot elements are only assigned once by default. However, if an element needs to be updated after the initial assignment you can make it none-static, meaning that the slots will be reassigned on every `slotchange` event.\n *\n * To update the slot on every `slotchange` event, set the `isStatic` property to false.\n *\n * ```html\n * \n * ```\n */\n@Directive({\n selector: \"slot\",\n})\nexport class SlotDirective implements AfterViewInit, OnDestroy {\n /**\n * Value of the slot element's `name` attribute. Empty values are possible.\n */\n @Input() name = \"\";\n /**\n * Set to `false` if slot value is expected to change after first render. Default is `true` for performance reasons.\n */\n @Input() isStatic = true;\n\n private slotchangeSubscription!: Subscription;\n\n constructor(private elementRef: ElementRef, private sanitizer: DomSanitizer) {}\n\n ngAfterViewInit() {\n this.slotchangeSubscription = this.onSlotchange().subscribe((slotElement) => {\n // Ignore the original slot element\n if (!slotElement.isSameNode(this.elementRef.nativeElement)) {\n // Clear the native element of its previous value\n this.elementRef.nativeElement.innerHTML = \"\";\n // Iterate each assigned slottable element clone\n for (const assignedNode of slotElement.assignedNodes().map((assignedNode) => assignedNode.cloneNode(true))) {\n // Sanitize the projected markup as HTML elements or text nodes\n if (assignedNode instanceof Element) {\n // Remove the slot attribute to avoid a DOM sanitizer warnings\n assignedNode.removeAttribute(\"slot\");\n this.elementRef.nativeElement.innerHTML += this.sanitizer.sanitize(SecurityContext.HTML, assignedNode.outerHTML);\n }\n if (assignedNode instanceof Text)\n this.elementRef.nativeElement.innerHTML += this.sanitizer.sanitize(SecurityContext.HTML, assignedNode.textContent);\n }\n }\n // Kill the subscription immediately after the initial slot duplication for static slot elements,\n // placed last in callstack to make the event stream asynchronous so that it can be unsubscribed\n // from within the subscription\n setTimeout(() => {\n if (this.isStatic) this.ngOnDestroy();\n });\n });\n }\n\n ngOnDestroy() {\n if (!this.slotchangeSubscription.closed) this.slotchangeSubscription.unsubscribe();\n }\n\n /**\n * Returns an observable that emits on to the original slot element's slotchange event and that is scoped to the shadow root subtree that this slot element is attached to.\n */\n private onSlotchange() {\n // The host element of the shadow subtree that this slot element belongs to\n const hostElement = (this.elementRef.nativeElement.getRootNode() as ShadowRoot).host;\n // This is the first slot element of this host\n if (!slotMap.get(hostElement))\n slotMap.set(hostElement, new Map([[this.name, this.getSlotElementSlotchangeMutationObservable()]]));\n // This is the first slot in the template markup with this this name\n else if (!slotMap.get(hostElement)?.has(this.name))\n slotMap.get(hostElement)?.set(this.name, this.getSlotElementSlotchangeMutationObservable());\n // Return observable for this slot element scoped to the host element namespace\n return slotMap.get(hostElement)?.get(this.name) as Observable;\n }\n\n /**\n * Returns an observable for the current slot element that emits when new slots elements are created or removed or a change is observed from the slottable element and/or its children.\n */\n private getSlotElementSlotchangeMutationObservable() {\n // Emits on changes to the slottable element and/or its children\n const slotMutationObservable = new Observable((observer) => {\n const mutation = new MutationObserver(() => {\n observer.next(this.elementRef.nativeElement);\n });\n for (const assignedNode of this.elementRef.nativeElement.assignedNodes())\n mutation.observe(assignedNode, {\n attributes: true,\n childList: true,\n subtree: true,\n characterData: true,\n });\n const unsubscribe = () => {\n mutation.disconnect();\n };\n return unsubscribe;\n });\n // Emits when slot elements are added/removed in the template markup\n // or when the slottable element attributes change\n const slotchangeObservable = fromEvent(this.elementRef.nativeElement, \"slotchange\");\n // Merge slotchange event and mutation observer into a single event stream\n return merge(slotMutationObservable, slotchangeObservable).pipe(\n // Start emitting stream using the original slot element\n startWith(this.elementRef.nativeElement),\n // Pluck the event target element on subsequent slotchange events\n map((event) => (\"target\" in event ? event.target : event) as HTMLSlotElement),\n // Ensure that the slot element has assigned nodes before proceeding\n filter((slotElement) => slotElement.assignedNodes().length !== 0)\n );\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { mergeDeep, uuid } from \"@vattenfall/util\";\nimport { Observable, ReplaySubject } from \"rxjs\";\n\n/**\n * The key to which the global store is referenced by in the storage\n */\nexport const STORAGE_NAMESPACE = \"@Elements\";\n\n/**\n * Extends 'window' object with Redux Web Tools\n */\ndeclare global {\n interface Window {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n __REDUX_DEVTOOLS_EXTENSION__: {\n /**\n * Connects to Redux Devtools.\n * Options: https://github.com/zalmoxisus/redux-devtools-extension/blob/master/docs/API/Arguments.md\n */\n connect: (options?: Record) => ReduxDevtools;\n };\n }\n}\n\n/**\n * The type describing a ReduxDevtools option\n */\nexport type ReduxDevtools = {\n /** Adds a change listener. It will be called any time an action is dispatched from the monitor. Returns a function to unsubscribe the current listener. */\n subscribe(message: string): void;\n /** Unsubscribes all listeners. */\n unsubscribe(): void;\n /** Sends a new action and state manually to be shown on the monitor. If action is null then we suppose we send liftedState. */\n send(action: string, state: Record): void;\n /** Sends the initial state to the monitor. */\n init(state: Record): void;\n /** Sends the error message to be shown in the extension's monitor. */\n error(message: string): void;\n};\n\n/**\n * The type describing Redux Devtools and Redux state object\n */\nexport type Redux = {\n devtools: ReduxDevtools | null;\n state: Record | null;\n};\n\n/**\n * An instance of Redux Devtools (if the extention has been installed in the browser)\n */\nconst redux = {\n devtools:\n (window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__.connect({ name: \"Vattenfall Elements\" })) || null,\n state: null,\n} as Redux;\n\n/**\n * The type describing a state action\n */\nexport type Action = {\n /**\n * Name of last state action\n */\n readonly action: string;\n};\n\n/**\n * The type describing a value state object\n */\nexport type StateModel = Partial & Action;\n\n/**\n * The store is a global state manager that dispatches actions to the element state containers, sets and persists state in session storage and ensures a unidirectional flow of the application data.\n *\n * **Example**\n *\n * Sets a new state value from object\n *\n * ```typescript\n * ExampleComponent {\n * constructor(store: Store) {\n * setState(\"new_state\", { isActive: true })\n * }\n * }\n * ```\n *\n * Sets a new state value from HTTP response using callback function\n *\n * ```typescript\n * ExampleComponent {\n * constructor(store: Store, exampleService: ExampleService) {\n * exampleService.get(this.id)\n * .then(store.setState(\"completed\"))\n * .catch(store.setState(\"errorred\"))\n * }\n * }\n * ```\n */\n@Injectable({\n providedIn: \"any\",\n})\nexport class Store {\n /**\n * State presented as an observable stream\n */\n public get stateChanges(): Observable> {\n return this.store$.asObservable();\n }\n /**\n * A snapshot of present state\n */\n public get snapshot(): StateModel {\n return Object.freeze(this.activeState) as StateModel;\n }\n /**\n * Returns the current value as an javascript object in browser storage associated with the given key, or null if the given key does not exist in the list associated with the object.\n *\n * The default storage engine is `sessionStorage`. Pass in another storage engine to override this behavior.\n */\n public getStorage(key: string, storageEngine = sessionStorage): T {\n const sessionStorageItem = storageEngine.getItem(`${STORAGE_NAMESPACE}${this.storageIdentifier}${key}`);\n if (sessionStorageItem) {\n return JSON.parse(sessionStorageItem);\n } else return {} as T;\n }\n /**\n * Sets the value of the pair identified by key to value in browser storage, creating a new key/value pair if none existed for key previously.\n *\n * The default storage engine is `sessionStorage`. Pass in another storage engine to override this behavior.\n */\n public setStorage(key: string, state = {}, storageEngine = sessionStorage) {\n storageEngine.setItem(`${STORAGE_NAMESPACE}${this.storageIdentifier}${key}`, JSON.stringify(state));\n }\n /**\n * Patch the value of the pair identified by key to value in browser storage, creating a new key/value pair if none existed for key previously.\n *\n * The default storage engine is `sessionStorage`. Pass in another storage engine to override this behavior.\n */\n public patchStorage(key: string, state = {}, storageEngine = sessionStorage) {\n this.setStorage(key, { ...this.getStorage(key), ...state }, storageEngine);\n }\n /**\n * Removes the key/value pair with the given key from the list associated with the object in browser storage, if a key/value pair with the given key exists.\n *\n * The default storage engine is `sessionStorage`. Pass in another storage engine to override this behavior.\n */\n public clearStorage(key: string, storageEngine = sessionStorage) {\n storageEngine.removeItem(`${STORAGE_NAMESPACE}${this.storageIdentifier}${key}`);\n }\n /**\n * Unique identifier for this storage instance\n */\n public id = uuid();\n /**\n * If storage should use . or - between STORAGE_NAMESPACE and the KEY\n */\n public storageIdentifier = \"-\";\n /**\n * Store dispatcher\n */\n private store$ = new ReplaySubject>();\n /**\n * Holds a local record of the active state\n */\n private activeState = { action: \"initialized\" } as StateModel;\n /**\n * Reset the state to a new value.\n *\n * Dispatches an action, updates the state if payload has been provided, and persists new state in storage. If no state has been provided, a callback function will returned that takes a new state object as its parameter.\n */\n public setState(action: string, state?: T) {\n const setState = (state: T) => {\n return this.setStorageAndState({ action, ...state });\n };\n if (state) return setState(state);\n return setState;\n }\n /**\n * Patch the existing state with the provided value.\n *\n * Dispatches an action, updates the state if payload has been provided, and persists new state in storage. If no state has been provided, a callback function will returned that takes a new state object as its parameter.\n */\n public patchState(action: string, state?: T) {\n const patchState = (state?: T) => {\n return this.setStorageAndState(mergeDeep>(this.activeState, { action, ...state }));\n };\n if (state) return patchState(state);\n return patchState;\n }\n /**\n * Sets a new action and resets state.\n *\n * Dispatches an action, resets the state, and persists new empty state in storage.\n */\n public setAction(action: string) {\n this.setStorageAndState({ action } as StateModel);\n }\n /**\n * Sets active state, updates storage, tracking and dispatches next state\n */\n private setStorageAndState(state: StateModel) {\n this.activeState = state;\n this.setStorage(this.id, state);\n this.setTracking(state, state.action);\n this.store$.next(state);\n return undefined;\n }\n /**\n * Publish state to Redux Devtools for state management tracking\n */\n private setTracking(state = {}, actionName: string) {\n if (redux.devtools) {\n if (!redux.state) {\n redux.devtools.init({});\n redux.state = {};\n }\n redux.state = Object.assign(redux.state, { [this.id]: state });\n redux.devtools.send(actionName, redux.state);\n }\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Directive, ɵmarkDirty as markDirty } from \"@angular/core\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\n\nimport { Store } from \"./store.service\";\n\n/**\n * The type describing a component's class constructor\n */\ntype ComponentConstructor = new (...args: any[]) => T;\n\n/**\n * `State` is a mixin function that unwraps observable properties from store and defines them as immutable properties on the child class.\n *\n * **Example**\n *\n * ```typescript\n * ExampleComponent extends State(ExampleStateModel) {\n * constructor(store: Store) {\n * super()\n * super.setStore(store)\n * }\n * }`\n * ```\n * @param StateModel State model class\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function State(StateModel: T) {\n @Directive()\n class State extends StateModel {\n constructor(...args: any[]) {\n super(args);\n }\n\n /**\n * Attaches the `Store` to state, subscribes to state changes, checks for properties on the child component with matching keys and updates the value of those properties.\n * @param store The instance of `Store` to subscribe to\n */\n public setStore(store: Store) {\n const destroyed$ = new Subject();\n const onDestroy = this.constructor.prototype.ngOnDestroy || (() => {});\n // Unwraps properties from state observable and sets values on component\n store.stateChanges.pipe(takeUntil(destroyed$)).subscribe((state) => {\n Object.entries(state).forEach(([key, value]) => {\n this[key] = value;\n markDirty(this);\n });\n });\n // Unsubscribes state subscription when the component is destroyed\n this.constructor.prototype.ngOnDestroy = function () {\n destroyed$.next();\n destroyed$.complete();\n onDestroy.call(this);\n };\n }\n }\n\n return State;\n}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\n\nimport {\n CareOfAddressValidator,\n EmailAddressValidator,\n GridAreaIdValidator,\n MaxValidator,\n MaxDateValidator,\n MaxWeekValidator,\n MaxMonthValidator,\n MaxYearValidator,\n MinValidator,\n MinDateValidator,\n MinWeekValidator,\n MinMonthValidator,\n MinYearValidator,\n OrganizationNumberValidator,\n PasswordValidator,\n PersonalNumberValidator,\n PhoneNumberValidator,\n PostalCodeValidator,\n PostalTownValidator,\n PremiseIdValidator,\n StreetNameValidator,\n WeekdayValidator,\n} from \"./validators.directive\";\n\n@NgModule({\n declarations: [\n EmailAddressValidator,\n GridAreaIdValidator,\n MaxValidator,\n MaxDateValidator,\n MaxWeekValidator,\n MaxMonthValidator,\n MaxYearValidator,\n MinValidator,\n MinDateValidator,\n MinWeekValidator,\n MinMonthValidator,\n MinYearValidator,\n OrganizationNumberValidator,\n PasswordValidator,\n PersonalNumberValidator,\n PhoneNumberValidator,\n PremiseIdValidator,\n PostalCodeValidator,\n StreetNameValidator,\n CareOfAddressValidator,\n PostalTownValidator,\n WeekdayValidator,\n ],\n imports: [CommonModule],\n exports: [\n EmailAddressValidator,\n GridAreaIdValidator,\n MaxValidator,\n MaxDateValidator,\n MaxWeekValidator,\n MaxMonthValidator,\n MaxYearValidator,\n MinValidator,\n MinDateValidator,\n MinWeekValidator,\n MinMonthValidator,\n MinYearValidator,\n OrganizationNumberValidator,\n PasswordValidator,\n PersonalNumberValidator,\n PhoneNumberValidator,\n PremiseIdValidator,\n PostalCodeValidator,\n StreetNameValidator,\n CareOfAddressValidator,\n PostalTownValidator,\n WeekdayValidator,\n ],\n})\nexport class ValidatorsModule {}\n","/** Whether the browser user-agent is a mobile device. */\nexport const isMobile = /Mobi|Tablet|iPad|iPhone|Android/.test(navigator.userAgent);\n\n/** Whether the browser user-agent is a desktop. */\nexport const isDesktop = !isMobile;\n","import { registerLocaleData } from \"@angular/common\";\nimport {\n Compiler,\n ComponentFactoryResolver,\n CUSTOM_ELEMENTS_SCHEMA,\n Inject,\n InjectionToken,\n Injector,\n LOCALE_ID,\n ModuleWithProviders,\n NgModule,\n NgModuleFactory,\n NgModuleRef,\n Optional,\n SkipSelf,\n StaticProvider,\n Type,\n} from \"@angular/core\";\n\n/**\n * `Environment` configuration object's injection token.\n *\n * Used for injecting the environment configuration object in a component, directive, service or class.\n *\n * The following example injects the environment token in a class.\n *\n * ```typescript\n * class Example {\n * constructor(@Optional() @Inject(ENVIRONMENT) private environment: Environment) {}\n * }\n * ```\n */\nexport const ENVIRONMENT = new InjectionToken(\"environment\");\n\n/**\n * List of locales supported by this application\n */\nexport const ENVIRONMENT_LOCALES = [\"sv-SE\", \"sv-FI\", \"fi-FI\"];\n\n/**\n * List of regions supported by this application\n */\nexport const ENVIRONMENT_REGIONS = [\"se\", \"fi\"];\n\n/**\n * List of languages supported by this application\n */\nexport const ENVIRONMENT_LANGUAGES = [\"sv\", \"fi\"];\n\n/**\n * The expected errors that could happen as a result of using this package\n */\nexport enum Errors {\n Undefined = \"No application configuration object was passed to the constructor. To solve this, make sure that the Vattenfall class is instantiated with proper runtime configurations.\",\n Locale = \"The provided locale is either empty or not supported. Please use one of the supported locales: 'sv-SE', 'sv-FI' or 'fi-FI'.\",\n BundleURL = \"The provided bundle URL is empty.\",\n BundleVersion = \"The bundle version is empty.\",\n ChatBaseUrl = \"Vattenfall Elements. The Chat API base URL is missing. Elements depending on this endpoint will not work.\",\n FinlandBaseUrl = \"Vattenfall Elements. The Finland base URL is missing. Elements depending on this endpoint will not work.\",\n SelfServiceBaseUrl = \"Vattenfall Elements. The Self Service API base URL is missing. Elements depending on this endpoint will not work.\",\n Initialized = \"Application already initialized. There should only be one instance of Vattenfall Elements, please make sure the it is not called more than once.\",\n Exception = \"Vattenfall Elements. Application was not bootstrapped.\",\n StaticProvidersCallback = \"No static providers callback. Make sure that a platform browser dynamic callback has been passed in 'main.ts' when calling 'createElementsClass'.\",\n ModuleImported = \"Could not import 'ElementsModule'. This module has already been imported, please sure it is imported once and in the application root module.\",\n ElementDefined = \"This custom element has already been defined. This suggest that 1) there might be another custom element with the same name existing on this site, or 2) the 'customElements.define' method might be called twice for the same element. Custom elements should be defined using the 'ElementsModule'.\",\n BootstrapElement = \"No bootstrapping element. Make sure that a custom element has been defined in the module's bootstrap array.\",\n LoadModule = \"Could not import module from dynamic path. Make sure that the custom elements module has been properly declared in the ElementsModule using dynamic import syntax.\",\n NoModule = \"Could not load module. Make sure that a module has been declared either as a dynamic import using the 'loadChildren' property or as a static import using the 'elementModule' property.\",\n CompileModule = \"Could not compile module. Make sure that all libraries are built using the same view engine. Re-build all applications and libraries in the workspace and try again.\",\n ElementNotFound = \"Could not compile module. No element was found with this tag.\",\n CustomElement = \"Could not create custom element from component.\",\n LocaleDataFailed = \"Could not load locale data.\",\n}\n\n/**\n * The global application configurations\n */\nexport interface AppConfig {\n /**\n * Whether the application has been initialized or not\n */\n initialized: boolean;\n /**\n * Whether the application is running in livemode or not. Default is `true`.\n */\n livemode: boolean;\n /**\n * Callback function to be invoked once the application static providers has been resolved\n */\n onStaticProvidersResolved?: OnStaticProvidersResolved;\n}\n\n/**\n * Global application details, such as whether the application has been initialized or not and the path to the app module.\n */\nexport const app: AppConfig = {\n livemode: true,\n initialized: false,\n};\n\n/**\n * The type describing supported locales for this application\n */\nexport type Locale = typeof ENVIRONMENT_LOCALES[number];\n\n/**\n * The type describing supported regions for this application\n */\nexport type Region = typeof ENVIRONMENT_REGIONS[number];\n\n/**\n * The type describing supported languages for this application\n */\nexport type Language = typeof ENVIRONMENT_LANGUAGES[number];\n\n/**\n * The type describing backend server endpoints. `null` indicates that the endpoint is not supported in that specific server environment.\n */\nexport type Endpoints = {\n selfServiceApi: string | null;\n finlandApi: string | null;\n chatApi: string | null;\n};\n\n/**\n * The type describing a callback function to be invoked once the application static providers has been resolved\n */\nexport type OnStaticProvidersResolved = (staticProviders: StaticProvider[]) => Promise>;\n\n/**\n * The type describing a callback function to be invoked once the application bootstrapping completed without exception\n */\nexport type OnSuccess = () => void;\n\n/**\n * The type describing a callback function to be invoked once the application bootstrapping failed with exception\n */\nexport type OnError = (error: Error) => void;\n\n/**\n * This is the interface describing an application bootstrap configuration object\n */\nexport interface Config {\n /**\n * The user's selected locale represented as a BCP 47 language and region tag.\n */\n locale: Locale;\n /**\n * Whether the application is running in livemode or not. Default is `true`.\n */\n livemode?: boolean;\n /**\n * The base URL pointing to the endpoints used by the Chat API. Only applicable when serving the application in `livemode`.\n */\n chatBaseUrl?: string;\n /**\n * The base URL pointing to the endpoints used by the Finland website. Only applicable when serving the application in `livemode`.\n */\n finlandBaseUrl?: string;\n /**\n * The base URL pointing to the endpoints used by the Self-Service API. Only applicable when serving the application in `livemode`.\n */\n selfServiceBaseUrl?: string;\n /**\n * The URL host to where the static files should be loaded. Only applicable when serving the application in `livemode`.\n */\n bundleUrl?: string;\n /**\n * The specific bundle version that should be used to instantiate the application. Only applicable when serving the application in `livemode`.\n */\n bundleVersion?: string;\n /**\n * The tracking id for Google Analytics.\n */\n trackingId?: string;\n /**\n * The reporting view id for Google Analytics.\n */\n viewId?: string;\n}\n\n/**\n * This is the interface describing an environment configuration object\n */\nexport interface Environment extends Config {\n /**\n * All the server endpoints used for this application and server environment.\n */\n endpoints: Endpoints;\n /**\n * The user's selected locale language.\n */\n language: Language;\n /**\n * Whether the application is running in livemode or not\n */\n livemode: boolean;\n /**\n * The user's selected locale region.\n */\n region: Region;\n}\n\n/**\n * Sets the global application bootstrap configurations and returns the `Elements` class.\n * @param onStaticProvidersResolved The callback function to be invoked with the static provides from the Elements class\n */\nexport function createElementsClass(onStaticProvidersResolved: OnStaticProvidersResolved, livemode = true) {\n app.onStaticProvidersResolved = onStaticProvidersResolved;\n app.livemode = livemode;\n return Elements;\n}\n\n/**\n * Resets the global application bootstrap configurations and returns the `Elements` class.\n * @param onStaticProvidersResolved The callback function to be invoked with the static provides from the Elements class\n */\nexport function resetElementsClass(onStaticProvidersResolved?: OnStaticProvidersResolved, livemode = true) {\n app.initialized = false;\n app.livemode = livemode;\n app.onStaticProvidersResolved = onStaticProvidersResolved;\n return Elements;\n}\n\n/**\n * `Elements` is the class responsible for bootstrapping instances of a Vattenfall Elements application from an environment configuration object.\n *\n * The environment configuration object is a set of runtime instructions required to bootstrap the application, such as the user's preferred locale or properties consumed by external data tracking services.\n * Optionally, callback functions can be passed to the constructor which will be called if the application bootstrapping was successful or not.\n *\n * **Usage**\n *\n * ```html\n * \n * ```\n */\nexport class Elements {\n /**\n * @param config The application bootstrap `Config` object\n * @param onSuccess An optional callback function be called if the application bootstrapping was successful\n * @param onError An optional callback function be called if the application bootstrapping failed with exception\n */\n constructor(private config: Config, private onSuccess?: OnSuccess, private onError?: OnError) {\n this.bootstrap(this.config)\n .then(() => {\n if (this.onSuccess) this.onSuccess();\n app.initialized = true;\n })\n .catch((error) => {\n console.error(Errors.Exception, error);\n if (this.onError) this.onError(error);\n });\n }\n\n /**\n * Performs a validity check of the provided environment object to make sure it contains all required properties and values. An invalid environment object will result in error.\n * @param environment the `Environment` configuration object\n */\n static validate(config: Config) {\n if (app.initialized) throw new Error(Errors.Initialized);\n if (!config || !Object.keys(config).length) throw new Error(Errors.Undefined);\n if (!config.locale || !ENVIRONMENT_LOCALES.includes(config.locale)) throw new Error(Errors.Locale);\n if (!config.bundleUrl && app.livemode && config.livemode !== false) throw new Error(Errors.BundleURL);\n if (!config.bundleVersion && app.livemode && config.livemode !== false) throw new Error(Errors.BundleVersion);\n if (!app.onStaticProvidersResolved) throw new Error(Errors.StaticProvidersCallback);\n if (!config.chatBaseUrl && app.livemode && config.livemode !== false) console.warn(Errors.ChatBaseUrl);\n if (!config.finlandBaseUrl && app.livemode && config.livemode !== false) console.warn(Errors.FinlandBaseUrl);\n if (!config.selfServiceBaseUrl && app.livemode && config.livemode !== false) console.warn(Errors.SelfServiceBaseUrl);\n }\n\n /**\n * Sets the base path from where static resources should be loaded, this is important when resources are loaded from an external endpoint like a CDN.\n * @param config The `Config` object\n */\n static publicPath(config: Config) {\n if (app.livemode && config.livemode !== false) {\n // The __webpack_public_path__ is a special configuration option that allows you to specify a base path\n // from where the application should load its static assets\n // @ts-ignore Global webpack property that is not recognized by typescript compiler\n __webpack_public_path__ = `${config.bundleUrl}/${config.bundleVersion}/`;\n }\n }\n\n /**\n * Takes a locale configuration and lazy-loads its Angular locale data file from the relevant path.\n * @param locale Locale string\n */\n static async locale(locale: Locale) {\n let localeData;\n try {\n switch (locale) {\n case \"sv-SE\":\n localeData = await import(\"@angular/common/locales/sv\").then((module) => module.default);\n break;\n case \"sv-FI\":\n localeData = await import(\"@angular/common/locales/sv-FI\").then((module) => module.default);\n break;\n case \"fi-FI\":\n localeData = await import(\"@angular/common/locales/fi\").then((module) => module.default);\n break;\n }\n return localeData;\n } catch (error) {\n throw new Error(`${Errors.LocaleDataFailed} Locale: ${locale}.\\n\\nException: ${error}`);\n }\n }\n\n /**\n * Returns the backend environment configurations from API\n * @param config the `Config` configuration object\n */\n static environment(config: Config) {\n return {\n livemode: app.livemode && config.livemode !== false,\n locale: config.locale,\n language: config.locale.split(\"-\")[0].toLowerCase(),\n region: config.locale.split(\"-\")[1].toLowerCase(),\n trackingId: config.trackingId,\n viewId: config.viewId,\n endpoints: {\n selfServiceApi: config.selfServiceBaseUrl ?? \"\",\n finlandApi: config.finlandBaseUrl ?? \"\",\n chatApi: config.chatBaseUrl ?? \"\",\n },\n } as Environment;\n }\n\n /**\n * Tries to boostraps the application from the provided environment configuration object, and throws an error if unsuccessful.\n * @param config the `Config` configuration object\n */\n private async bootstrap(config: Config) {\n Elements.validate(config);\n Elements.publicPath(config);\n\n const environment = Elements.environment(config);\n const localeData = await Elements.locale(config.locale);\n\n registerLocaleData(localeData, config.locale);\n\n if (app.onStaticProvidersResolved)\n return app.onStaticProvidersResolved([\n {\n provide: ENVIRONMENT,\n useValue: environment as Environment,\n },\n // TODO (stefan): Temporarily providing the elements environment configs as a string based\n // injection token. This is because we are referencing it from the @vattenfall/self-service library and\n // which cannot import files from this directory.\n // Once we have the @vattenfall/core library setup this will no longer be an issue.\n {\n provide: \"ELEMENTS_ENVIRONMENT\",\n useValue: environment as Environment,\n },\n {\n provide: LOCALE_ID,\n useValue: config.locale,\n },\n ]);\n return undefined;\n }\n}\n\n/**\n * `ElementModules` arrays's injection token. Used for injecting the components array in the `ElementsModule`\n */\nexport const ELEMENT_ROUTES = new InjectionToken(\"ELEMENT_ROUTES\");\n\n/**\n * Represents an array of Vattenfall Elements routes or components.\n */\nexport type ElementRoutes = Array;\n\n/**\n * Represents a component type class\n * @depreciated The preferred way is using an `ElementRoute` object to make use of features such as lazy-loading.\n */\nexport type DepreciatedComponentType = Type;\n\n/**\n * A configuration object that defines a single element. A set of elements are collected in a `Elements` array.\n */\nexport interface ElementRoute {\n /**\n * The element's tag name.\n */\n tagName: string;\n /**\n * The element to instantiate when the tag name matches. Should be empty if a `loadElement` function has been specified.\n *\n * When specified, the element will be included in the application bootstrapping bundle, when not a dynamic loading callback should be specified for `loadElementModule` in which case it will be lazy loaded when requested in the DOM.\n */\n elementModule?: Type;\n /**\n * A `LoadElementModuleCallback` object specifying lazy-loaded child routes.\n */\n loadChildren?: LoadElementModuleCallback;\n}\n\n/**\n * A function that is called to resolve a collection of lazy-loaded elements.\n *\n * This function must be implemented using an ES dynamic `import()` expression. For example: `import('./example/example.module').then(mod => mod.ExampleElementModule)`\n */\nexport type LoadElementModuleCallback = () => Promise>;\n\n/**\n * `ElementsModule` manages the application `Element` components, and should be imported once at the application root.\n *\n * To create module use the `forRoot` static method, it will create a module that contain all the elements and instantiation logic required to load and generate elements.\n *\n * The module should be imported as follows: `imports: [ ElementsModule.forRoot(ELEMENT_ROUTES) ]` in your application's root module.\n */\n@NgModule({\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class ElementsModule {\n static forRoot(elementRoutes: ElementRoutes): ModuleWithProviders {\n return {\n ngModule: ElementsRootModule,\n providers: [\n {\n provide: ELEMENT_ROUTES,\n useValue: elementRoutes,\n },\n ],\n };\n }\n\n constructor(@Optional() @SkipSelf() parentModule: ElementsModule) {\n // Make sure multiple instances of the environment module is not created\n // The elements module should only be imported once at the application root\n if (parentModule) {\n throw new Error(Errors.ModuleImported);\n }\n }\n}\n\n/**\n * `ElementsRootModule` is the module return from the `ElementModule.forRoot` method. It is responsible for creating custom elements from a list of `ElementRoutes`.\n */\n@NgModule()\nexport class ElementsRootModule {\n /**\n * Creates a custom element from an Angular component and register it in the browser custom elements registry\n * @param tagName Name for the new custom element. Note that custom element names must contain a hyphen.\n * @param component The Angular component to create a custom element from\n */\n public async createElement(tagName: string, component: Type) {\n if (!customElements.get(tagName)) {\n try {\n const customElement = await import(\"@angular/elements\").then((angularElementsModule) =>\n angularElementsModule.createCustomElement(component, {\n injector: this.injector,\n })\n );\n customElements.define(tagName, customElement);\n } catch (error) {\n throw new Error(`${Errors.CustomElement} Failed with exception: ${(error as Error).message || error}`);\n }\n return customElements.whenDefined(tagName);\n } else throw new Error(Errors.ElementDefined);\n }\n\n /**\n * Creates a mutation observer from `ElementRoute` that listens to inclusions of a specific custom element tag in the DOM subtree and compiles components when found\n * @param elementRoute\n */\n private observeElement(elementRoute: ElementRoute) {\n const mutationObserver = new MutationObserver(async () => {\n if (document.body.querySelector(elementRoute.tagName)) {\n try {\n await this.compileElements(elementRoute);\n } finally {\n // Make sure to disconnect on failed attempts to avoid an endless loop\n mutationObserver.disconnect();\n }\n }\n });\n mutationObserver.observe(document.body, {\n subtree: true,\n childList: true,\n });\n }\n\n /**\n * Compiles a elements from `ElementRoute` module and add class to custom element when compiling or failing\n * @param elementRoute The `ElementRoute` object\n */\n private async compileElements(elementRoute: ElementRoute) {\n const customElement = document.querySelector(elementRoute.tagName);\n if (!customElement) throw new Error();\n customElement.classList.add(\"vattenfall-element\");\n try {\n // Add compiling class\n const elementModule = await this.getElementModule(elementRoute);\n const elementModuleFactory = await this.getElementModuleFactory(elementModule);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const elementModuleRef = elementModuleFactory!.create(this.injector) as unknown as {\n _bootstrapComponents: Type[];\n };\n const elementComponentTypes = elementModuleRef._bootstrapComponents;\n if (!elementComponentTypes.length) throw new Error(Errors.BootstrapElement);\n else\n for (const elementComponentType of elementComponentTypes)\n await this.createElement(elementRoute.tagName, elementComponentType);\n // Remove compiling class\n customElement.classList.add(\"completed\");\n } catch (error) {\n // Add error class\n customElement.classList.add(\"failed\");\n if (!this.environment.livemode)\n customElement.innerHTML = `Vattenfall Element

${error}
`;\n }\n }\n\n /**\n * Loads element module from `ElementRoute` and throw an error if unsuccessful\n * @param elementRoute The `ElementRoute` object\n */\n private async getElementModule(elementRoute: ElementRoute) {\n try {\n if (elementRoute.loadChildren) return await elementRoute.loadChildren();\n } catch (error) {\n throw new Error(`${Errors.LoadModule} Failed with exception: ${(error as Error).message || error}`);\n }\n if (!elementRoute.elementModule) throw new Error(Errors.NoModule);\n return elementRoute.elementModule;\n }\n\n /**\n * Compiles element module from `ElementRoute` and throw an error if unsuccessful\n * @param elementRoute The `ElementRoute` object\n */\n private async getElementModuleFactory(elementModule: Type) {\n try {\n if (elementModule instanceof NgModuleFactory) return elementModule;\n else {\n return await this.compiler.compileModuleAsync(elementModule);\n }\n } catch (error) {\n throw new Error(`${Errors.CompileModule} Failed with exception: ${(error as Error).message || error}`);\n return;\n }\n }\n\n constructor(\n private injector: Injector,\n private compiler: Compiler,\n private componentFactoryResolver: ComponentFactoryResolver,\n @Optional()\n @Inject(ELEMENT_ROUTES)\n public elementRoutes: ElementRoutes,\n @Optional()\n @Inject(ENVIRONMENT)\n public environment: Environment\n ) {\n // The provided route is a proper element route\n for (const elementRoute of elementRoutes)\n if (\"tagName\" in elementRoute)\n if (document.body.querySelector(elementRoute.tagName)) this.compileElements(elementRoute);\n else this.observeElement(elementRoute);\n // The provided route is a depreciated component class\n else {\n const tagName = this.componentFactoryResolver.resolveComponentFactory(elementRoute).selector;\n this.createElement(tagName, elementRoute);\n }\n }\n}\n","import { DOCUMENT } from \"@angular/common\";\nimport { Inject, Injectable, Type } from \"@angular/core\";\nimport { TestBed, TestComponentRenderer, TestModuleMetadata } from \"@angular/core/testing\";\nimport { Store } from \"@ngxs/store\";\n\nimport { Environment, ENVIRONMENT } from \"./elements\";\n\ntype Optional = Pick, K> & Omit;\n\n// A dummy custom element to be used as the root element and component host view\nclass RootElement extends HTMLElement {\n constructor() {\n super();\n }\n}\n\n/**\n * A DOM based implementation of the `TestComponentRenderer` for custom elements.\n *\n * This class is used in place of the `DOMTestComponentRenderer` which creates a div element with a unique id in the document body,\n * and then creates a component with that div element as its application host view. This will not work with custom elements,\n * because the custom element is defined by its tag name.\n *\n * By overriding the `DOMTestComponentRenderer`, this class makes sure that the root element is a custom element and that the test component\n * is created inside that element. This allows for both testing the component as a `ComponentFixture` and still use `slot` elements\n * and other web component utilities.\n */\n@Injectable()\nclass DOMTestElementRenderer extends TestComponentRenderer {\n constructor(@Inject(DOCUMENT) private document: Document, @Inject(\"tagName\") private tagName: string | undefined) {\n super();\n }\n\n // This method will be invoked by the `TestBed` `createComponent` method before the component is created,\n // and the `ComponentFixture` is returned\n insertRootElement(rootElementId: string) {\n if (!this.tagName) throw new Error(`[ Vattenfall Elements ] – No tag name provided. Could not insert custom root element.`);\n\n if (!customElements.get(this.tagName)) {\n // Define the `RootElement` as a custom element in the browser custom elements registry\n customElements.define(this.tagName, RootElement);\n }\n const rootElement = this.document.createElement(this.tagName);\n rootElement.id = rootElementId;\n this.document.body.appendChild(rootElement);\n }\n}\n\n/**\n * `StateProp` is the type describing the global state of the application\n */\nexport type StateProp = { [state: string]: unknown };\n\n/**\n * `ActionProp` is the type describing a state action and its payload\n */\nexport type ActionProp = new (...args: unknown[]) => unknown;\n\n/**\n * `SlotableElementProp` is the type describing a slotable element object\n */\nexport type SlotableElementProp = {\n value?: string;\n tagName?: string;\n attr?: { [attributeName: string]: string };\n};\n\n/**\n * `SlotableElementProps` is the type describing an object of slotable elements\n */\nexport type SlotableElementProps = {\n [slotRef: string]: string | SlotableElementProp;\n};\n\n/**\n * `ElementMetadata` is the type describing metadata to use when bootstraping an Vattenfall Element\n */\nexport type ElementMetadata = {\n environment: Optional;\n state?: StateProp;\n slotableElements?: SlotableElementProps | string;\n};\n\nlet elementsTestBed: ElementsTestBed;\n\nexport function getElementsTestBed(): ElementsTestBed {\n return (elementsTestBed = elementsTestBed || new ElementsTestBed());\n}\n/**\n * The `ElementsTestBed` is the primary API for writing unit tests for elements, components and services in the Vattenfall Elements framework.\n *\n * I inherits the same functionality as the standard Angular TestBed, but extends it with methods for testing custom elements and other related web component technologies.\n */\nexport class ElementsTestBed {\n private store!: Store;\n private state!: StateProp;\n private environment!: Environment;\n private slotableElements!: { [slotRef: string]: HTMLElement } | string;\n\n /**\n * Creates a component as a child of a custom element and return that component as a `ComponentFixture`.\n *\n * Please note that similarly to the `createComponent` method, the first time this method is invoked the environment for unit testing stays fixed to that specific configuration,\n * and that this method returns a Promise since the custom elements definition is an async process.\n *\n * @param component The component to create\n */\n static async createElement(component: Type) {\n const componentSelector = ElementsTestBed.componentSelector(component);\n // This override the `TestComponentRenderer` which is responsible for creating\n // a root element which the `createComponent` method will use to attach the component into,\n // with a custom built renderer for custom elements\n TestBed.overrideProvider(TestComponentRenderer, {\n useFactory: (document: Document) => new DOMTestElementRenderer(document, componentSelector),\n deps: [DOCUMENT],\n });\n // This sets the inital state for the element\n if (getElementsTestBed().state) ElementsTestBed.configureState(getElementsTestBed().state);\n // Create a component fixture with the `DOMTestElementRenderer` now intercepting root element creating step\n const fixture = TestBed.createComponent(component);\n // Append the slotable elements as children to the custom element\n if (getElementsTestBed().slotableElements)\n if (typeof getElementsTestBed().slotableElements === \"string\") {\n fixture.nativeElement.innerHTML = getElementsTestBed().slotableElements;\n } else\n Object.values(getElementsTestBed().slotableElements).forEach((slotableElement) =>\n fixture.nativeElement.appendChild(slotableElement)\n );\n // Await the custom element to be defined in the browser custom elements registry\n // and then return its component fixture\n if (componentSelector) await customElements.whenDefined(componentSelector);\n return fixture;\n }\n\n /**\n * Returns a component's selector from its class annotation\n * @param component The component to get the selector from\n */\n static componentSelector(component: Type) {\n const annotations = Object.getOwnPropertyDescriptor(component, \"__annotations__\");\n if (annotations) return annotations.value[0].selector;\n else return undefined;\n }\n\n /**\n * Takes a list of slotable element objects and generates a list of real HTML elements.\n *\n * **Usage**\n *\n * ```html\n * \n * Some slotted value\n * \n *
Some slotted value
\n * \n * \n * ```\n *\n * @param slotableElements The slotable objects to generate HTML elements from\n */\n static generateSlotableElements(slotableElementProps: SlotableElementProps): { [slotRef: string]: HTMLElement } {\n const slotableElements: Record = {};\n for (const slotRef in slotableElementProps) {\n const slotValueOrObject = slotableElementProps[slotRef];\n // If the value is a string then use \n const tagName = typeof slotValueOrObject === \"string\" || !slotValueOrObject.tagName ? \"span\" : slotValueOrObject.tagName;\n const attributes =\n typeof slotValueOrObject !== \"string\" && slotValueOrObject.attr ? Object.entries(slotValueOrObject.attr) : [];\n const value = typeof slotValueOrObject === \"string\" ? slotValueOrObject : slotValueOrObject.value || \"\";\n const slotableElement = document.createElement(tagName);\n attributes.forEach(([attributeName, attributeValue]) => slotableElement.setAttribute(attributeName, attributeValue));\n slotableElement.setAttribute(\"slot\", slotRef);\n slotableElement.textContent = value;\n slotableElements[slotRef] = slotableElement;\n }\n return slotableElements;\n }\n\n /**\n * Extracts slot elements from a HTML string or HTMLElement\n * @param htmlStringOrElement The HTML string or HTMLElement to extract the slots elements from\n */\n static extractSlotElements(htmlStringOrElement: string | HTMLElement): { [slotRef: string]: HTMLSlotElement } {\n const slotElements: Record = {};\n const element = document.createElement(\"template\");\n if (typeof htmlStringOrElement === \"string\") element.innerHTML = htmlStringOrElement;\n else element.appendChild(htmlStringOrElement);\n element.querySelectorAll(\"slot\").forEach((slotElement) => {\n const slotRef = slotElement.getAttribute(\"name\") || \"__empty__\";\n slotElements[slotRef] = slotElement;\n });\n return slotElements;\n }\n\n /**\n * Sets the test modules boostrap configuration options.\n *\n * **Environment**\n *\n * This would be useful when testing an element's behaviour in for example different locales.\n *\n * The config argument reflects the same as when the application config used when bootstraping the application i.e. `new Elements({ ... })`; however,\n * by providing the environment object you may overwrite any of these arguments if needed, for example when testing that a service throws an error\n * if an incorrect URL path has been provided.\n *\n * **State**\n *\n * This is useful when setting an initial state of the application before components are created and loaded in view.\n * Please note that you need to provide the registered state name as key, as this method will set the entire global state.\n *\n * **Slots**\n *\n * This allows you to pass slotable elements to the element.\n *\n * @param elementDef The element's bootstraping configurations\n */\n static configureElements(elementDef: ElementMetadata) {\n // Set the environment configs\n {\n getElementsTestBed().environment = {\n livemode: false,\n locale: elementDef.environment.locale,\n language: elementDef.environment.language\n ? elementDef.environment.language\n : elementDef.environment.locale.split(\"-\")[0].toLowerCase(),\n region: elementDef.environment.region\n ? elementDef.environment.region\n : elementDef.environment.locale.split(\"-\")[1].toLowerCase(),\n endpoints: elementDef.environment.endpoints\n ? elementDef.environment.endpoints\n : {\n selfServiceApi: \"/elements\",\n acquisitionApi: \"/api/acquisition\",\n },\n trackingId: elementDef.environment.trackingId,\n viewId: elementDef.environment.viewId,\n } as Environment;\n }\n\n // Set slot elements\n if (elementDef.slotableElements) {\n if (typeof elementDef.slotableElements !== \"string\")\n getElementsTestBed().slotableElements = ElementsTestBed.generateSlotableElements(elementDef.slotableElements);\n else getElementsTestBed().slotableElements = elementDef.slotableElements;\n }\n\n // Sets the inital state\n if (elementDef.state) {\n getElementsTestBed().state = elementDef.state;\n }\n\n return ElementsTestBed;\n }\n\n /**\n * Sets or resets the state of the application.\n *\n * This is useful when preparing the state for the next operation.\n * Please note that you need to provide the registered state name as key, as this method will set the entire global state.\n *\n * The state will not be patched, but reset everytime this method is called.\n *\n * @param state The global state to set\n */\n static configureState(state: StateProp) {\n // Should save the state and take from that when the app is initialized\n getElementsTestBed().store = getElementsTestBed().store || TestBed.inject(Store);\n getElementsTestBed().store.reset(state);\n }\n\n /**\n * Dispatches a state action and returns a promise which resolves once the dispatch has completed.\n * @param action The action to dispatch\n */\n static async dispatchAction(action: ActionProp) {\n await getElementsTestBed().store.dispatch(action).toPromise();\n }\n\n /**\n * Allows overriding default providers, directives, pipes, modules of the test injector, which are defined in test_injector.js\n */\n static configureTestingModule(moduleDef: TestModuleMetadata) {\n return TestBed.configureTestingModule({\n ...{\n // TODO (stefan): Add LOCALE provider as well in order to test elements using different locale settings\n providers: [\n {\n provide: ENVIRONMENT,\n useValue: getElementsTestBed().environment,\n },\n ].concat(moduleDef.providers || []),\n },\n ...moduleDef,\n });\n }\n}\n\ndeclare global {\n namespace jest {\n interface Matchers {\n toBeAssigned(): R;\n toBeAssignedOrDuplicated(): R;\n }\n }\n}\n\n/**\n * For checking whether an HTMLSlotElement has any nodes assigned to it\n */\nif (typeof window === \"undefined\")\n expect.extend({\n toBeAssigned(received: HTMLSlotElement) {\n if (received.assignedNodes().length) {\n return {\n message: () => `expected HTMLSlotElement '${received.name}' not to have assigned nodes`,\n pass: true,\n };\n } else {\n return {\n message: () => `expected HTMLSlotElement '${received.name}' to have assigned nodes`,\n pass: false,\n };\n }\n },\n });\n\n/**\n * For checking whether an HTMLSlotElement has any nodes assigned to it or if the slot element has been duplicated\n */\nif (typeof window === \"undefined\")\n expect.extend({\n toBeAssignedOrDuplicated(received: HTMLSlotElement) {\n let duplicatedSlot;\n if (!received.assignedNodes().length) {\n const slottableElements = Array.from((received.getRootNode() as ShadowRoot).host.children);\n duplicatedSlot = Array.from(received.children).some((childElement) =>\n slottableElements.some((slottableElement) => childElement.innerHTML === slottableElement.innerHTML)\n );\n }\n if (received.assignedNodes().length || duplicatedSlot) {\n return {\n message: () => `expected HTMLSlotElement '${received.name}' not to have assigned nodes`,\n pass: true,\n };\n } else {\n return {\n message: () => `expected HTMLSlotElement '${received.name}' to have assigned nodes`,\n pass: false,\n };\n }\n },\n });\n","import { DatePipe } from \"@angular/common\";\nimport { Pipe, PipeTransform } from \"@angular/core\";\nimport { coerceNumberProperty } from \"@vattenfall/util\";\n\n/**\n * Takes either a date object or an integer value indicating a specific month of the year and return the name of that month. The unit pipe will produce different outputs depending on the locale of current runtime environment.\n *\n * ### Usage\n *\n * **With a integer value**\n *\n * ```html\n * input: 3 | month\n * output: Mars\n * ```\n *\n * **With a date object**\n *\n * ```html\n * input: date | month\n * output: Mars\n * ```\n */\n@Pipe({\n name: \"month\",\n})\nexport class MonthPipe implements PipeTransform {\n constructor(private datePipe: DatePipe) {}\n /**\n * @param month The month represented as a integer value or date object to return.\n */\n transform(month: number | string | null | undefined | Date): string | null {\n if (month == null || month === \"\") return null;\n\n if (month instanceof Date) return this.datePipe.transform(month, \"LLLL\");\n\n if (![1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12].includes(coerceNumberProperty(month)))\n throw new Error(\n `[ Vattenfall Elements ] Invalid pipe argument for pipe 'month'. The provided month '${month}' is invalid, must be an integer in the range of 1 to 12.`\n );\n\n const date = new Date(0);\n date.setMonth(coerceNumberProperty(month), 0);\n\n return this.datePipe.transform(date, \"LLLL\");\n }\n}\n","import { Inject, Pipe, PipeTransform } from \"@angular/core\";\n// import { englishDateFnsLocale, finishDateFnsLocale, formatDistance, swedishDateFnsLocale } from \"@vattenfall/util\";\n\nimport { ENVIRONMENT, Environment } from \"../elements/elements\";\n\ninterface RelativeTimeFormatType {\n unit: Intl.RelativeTimeFormatUnit;\n divisor: number;\n}\n/**\n * Pipe for formatting a date to a distance from now.\n * The return strings will be in the language specified by the environment the app is running in.\n * It uses Intl.RelativeTimeFormat under the hood.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RelativeTimeFormat\n * Usage:\n * {{ date | relativeTimeFormat: dateTo }} \n * @param dateFrom The date from which the distance is calculated\n * @param dateTo The date to which the distance is calculated\n * @param unit The unit in which the distance should be returned. If not specified, the unit will be automatically determined.\n * @returns A string describing the distance between the two dates in a human readable format\n * @example \"2 days ago\", \"4 minutes ago\"\n * @example \"för 2 dagar sedan\", \"för 4 minuter sedan\"\n * @example \"2 päivää sitten\", \"4 minuuttia sitten\"\n */\n@Pipe({\n name: \"relativeTimeFormat\",\n})\nexport class RelativeTimeFormatPipe implements PipeTransform {\n constructor(@Inject(ENVIRONMENT) private readonly environment: Environment) {}\n\n transform(dateFrom: Date | string, dateTo: Date = new Date(), unit?: Intl.RelativeTimeFormatUnit): string | null {\n try {\n if (typeof dateFrom === \"string\") dateFrom = new Date(dateFrom);\n } catch (error) {\n console.error(\"Invalid date format in pipe 'dateFormatDistance'.\", error);\n return null;\n }\n if (dateFrom == null || dateTo == null) return null;\n return this.calculateTimeDifference(dateFrom, dateTo, unit);\n }\n\n calculateTimeDifference(dateFrom: Date, dateTo: Date, unit?: Intl.RelativeTimeFormatUnit): string {\n const locale = this.environment.locale;\n const format = new Intl.RelativeTimeFormat(locale, { numeric: \"auto\" });\n\n const distanceInSeconds = Math.round((dateFrom.getTime() - dateTo.getTime()) / 1000);\n\n const timeUnits: Array = [\n { unit: \"year\", divisor: 31536000 },\n { unit: \"month\", divisor: 2592000 },\n { unit: \"week\", divisor: 604800 },\n { unit: \"day\", divisor: 86400 },\n { unit: \"hour\", divisor: 3600 },\n { unit: \"minute\", divisor: 60 },\n { unit: \"second\", divisor: 1 },\n ];\n // If the user has specified in which format the distance should be returned, use that format\n if (unit) {\n const matchingUnit = timeUnits.find((unitItem) => unitItem.unit === unit);\n if (matchingUnit) {\n const { divisor } = matchingUnit;\n const value = Math.round(distanceInSeconds / divisor);\n return format.format(value, unit);\n } else {\n throw new Error(`Invalid unit '${unit}' specified in pipe 'relativeTimeFormat'.`);\n }\n }\n\n // Otherwise find the most appropriate format\n for (const unitInfo of timeUnits) {\n if (Math.abs(distanceInSeconds) >= unitInfo.divisor) {\n const value = Math.round(distanceInSeconds / unitInfo.divisor);\n const unit: Intl.RelativeTimeFormatUnit = unitInfo.unit;\n return format.format(value, unit);\n }\n }\n\n // Default return value in seconds\n return format.format(distanceInSeconds, \"second\");\n }\n}\n","import { DecimalPipe } from \"@angular/common\";\nimport { Inject, Optional, Pipe, PipeTransform } from \"@angular/core\";\nimport { coerceNumberProperty } from \"@vattenfall/util\";\n\nimport { ENVIRONMENT, Environment } from \"../elements\";\n\n/**\n * List of units supported by this application\n */\nconst UNITS = [\n \"KWH\",\n \"MWH\",\n \"GWH\",\n \"SWEDISH_KRONA\",\n \"SWEDISH_ORE\",\n \"SWEDISH_ORE/KWH\",\n \"SWEDISH_KRONA/YEAR\",\n \"SWEDISH_KRONA/MONTH\",\n \"INVOICES_PER_YEAR\",\n \"KWH_PER_YEAR\",\n \"MWH_PER_YEAR\",\n \"SWEDISH_KRONA/MWH\",\n \"SWEDISH_KRONA/CUBIC_METER\",\n \"UNIT_UNKNOWN\",\n \"EURO/MONTH\",\n \"EURO_CENT/KWH\",\n \"MONTH\",\n \"WEEKS\",\n \"MONTHS\",\n \"DAYS\",\n \"YEARS\",\n \"KG/MONTH\",\n \"DAYS_REMAINING\",\n \"CELSIUS\",\n \"M3\",\n \"SN1\",\n \"SN2\",\n \"SN3\",\n \"SN4\",\n];\n\n/**\n * The type describing supported unit keys for this application\n */\nexport type Unit = typeof UNITS[number];\n\n/**\n * The type describing a unit value.\n *\n * A unit-value is a special kind of object that is used when consuming data from backend services\n * used by Vattenfall.\n *\n * It contains metadata of the kind of value that is being provided so that the frontend can\n * present it in a way that makes sense for the end user.\n */\nexport type UnitValue = {\n readonly unit: Unit;\n readonly value: number;\n};\n\n/**\n * Resolves rest parameters into key-value tuple\n * @param decimalPipe Decimal pipe transform function to format value with\n * @param parameters Parameters as passed into the pipe\n */\nfunction resolveParameters(\n decimalPipe: DecimalPipe,\n parameters: [UnitValue, string] | [Unit] | [UnitValue, Unit, string]\n): [string | null, Unit] {\n // Returns true if value is a unit-value object\n const isUnitValue = (value: string | UnitValue) => typeof value !== \"string\" && isUnitValueKey(value?.unit);\n\n // Returns true if value is a unit-value key\n const isUnitValueKey = (value: Unit) => UNITS.includes(value);\n\n if (parameters.length) {\n if (isUnitValue(parameters[0])) {\n const [unitValue, digitsInfo] = parameters as unknown as [UnitValue, string];\n return [decimalPipe.transform(coerceNumberProperty(unitValue.value), digitsInfo ?? null), unitValue.unit];\n } else if (isUnitValueKey(parameters[0] as Unit)) {\n const [unit] = parameters as [Unit];\n return [\"\", unit];\n } else if (isUnitValueKey(parameters[1] as Unit)) {\n const [value, unit, digitsInfo] = parameters as unknown as [UnitValue, Unit, string];\n return [decimalPipe.transform(coerceNumberProperty(value), digitsInfo ?? null), unit];\n }\n }\n\n throw new Error(\n `[ Vattenfall Elements ] Invalid pipe argument for pipe 'unit'. Expect a 'UnitValue' object, a 'Unit' or a number followed by a unit parameter. Got ${JSON.stringify(\n parameters\n )}`\n );\n}\n\n/**\n * The unit pipe will take unit-value and parse it into a string that is meaningful for the end user.\n *\n * It takes either a `UnitValue` object, a `Unit` or numeric value as input. If a numeric value then\n * a `key` parameter must be provided. Optionally, a digits parameter may be provided which parse the\n * numeric value into the specified format.\n * If only a `Unit` is provided the translated unit is returned.\n *\n * The unit pipe will produce different outputs depending on the locale of current runtime environment.\n *\n * ### Usage\n *\n * **With a unit-value object as input**\n *\n * ```html\n * input: { key: \"KWH_PER_YEAR\", value: 12532 } | unit\n * output: 12 523 kWh/år\n * ```\n *\n * **With a numeric value as input**\n *\n * ```html\n * input: 13.43 | unit : 'EURO/MONTH' }}\n * output: 13.43 €/kk\n * ```\n *\n * **With a digits parameter**\n *\n * ```html\n * input: 13.43 | unit : '1.1-1'\n * output: 13.4 €/kk\n * ```\n *\n * **With a `Unit` parameter**\n *\n * ```html\n * input: \"KWH\" | unit\n * output: kWh\n * ```\n */\n@Pipe({\n name: \"unit\",\n})\nexport class UnitPipe implements PipeTransform {\n constructor(\n @Optional()\n @Inject(ENVIRONMENT)\n private environment: Environment,\n private decimalPipe: DecimalPipe\n ) {}\n /**\n * @param input The unit-value object, `Unit` or number to be formatted.\n * @param unit A unit key used for parsing the value. Required if the provided input is a number.\n * @param digitsInfo Decimal representation options, specified by a string\n * in the following format:
\n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}.\n * - `minIntegerDigits`: The minimum number of integer digits before the decimal point.\n * Default is `1`.\n * - `minFractionDigits`: The minimum number of digits after the decimal point.\n * Default is `0`.\n * - `maxFractionDigits`: The maximum number of digits after the decimal point.\n * Default is `3`.\n */\n transform(...parameters: Array): string | null {\n if (!parameters.length || parameters[0] == null) return null;\n\n const [value, unit] = resolveParameters(\n this.decimalPipe,\n parameters as unknown as [UnitValue, string] | [UnitValue, Unit, string]\n );\n\n switch (this.environment.language) {\n case \"sv\": {\n return this.sv(value, unit);\n }\n case \"fi\": {\n return this.fi(value, unit);\n }\n default:\n throw new Error(\n `[ Vattenfall Elements ] Invalid pipe argument for pipe 'unit'. The locale '${this.environment.locale}' is not supported by this pipe.`\n );\n }\n }\n\n private sv(value: string | null, unit: Unit) {\n switch (unit) {\n case \"KWH\":\n return `${value} kWh`;\n case \"MWH\":\n return `${value} MWh`;\n case \"GWH\":\n return `${value} GWh`;\n case \"SWEDISH_KRONA\":\n return `${value} kr`;\n case \"SWEDISH_ORE\":\n return `${value} öre`;\n case \"SWEDISH_ORE/KWH\":\n return `${value} öre/kWh`;\n case \"SWEDISH_KRONA/YEAR\":\n return `${value} kr/år`;\n case \"SWEDISH_KRONA/MONTH\":\n return `${value} kr/mån`;\n case \"INVOICES_PER_YEAR\":\n return Number(value) > 1 ? `${value} fakturor per år` : `${value} faktura per år`;\n case \"KWH_PER_YEAR\":\n return `${value} kWh/år`;\n case \"MWH_PER_YEAR\":\n return `${value} MWh/år`;\n case \"SWEDISH_KRONA/MWH\":\n return `${value} kr/MWh`;\n case \"SWEDISH_KRONA/CUBIC_METER\":\n return `${value} kr/m3`;\n case \"UNIT_UNKNOWN\":\n return `${value}`;\n case \"EURO/MONTH\":\n return `${value} €/mån`;\n case \"EURO_CENT/KWH\":\n return `${value} c/kWh`;\n case \"MONTH\":\n return `${value} månad`;\n case \"MONTHS\":\n return Number(value) > 1 ? `${value} månader` : `${value} månad`;\n case \"WEEKS\":\n return Number(value) > 1 ? `${value} veckor` : `${value} vecka`;\n case \"DAYS\":\n return Number(value) > 1 ? `${value} dagar` : `${value} dag`;\n case \"YEARS\":\n return `${value} år`;\n case \"KG/MONTH\":\n return `${value} kg/mån`;\n case \"DAYS_REMAINING\":\n return Number(value) === 0 ? `idag` : Number(value) === 1 ? `${value} dag kvar` : `${value} dagar kvar`;\n case \"CELSIUS\":\n return `${value} °C`;\n case \"M3\":\n return `${value ? value : \"\"} m3`.trim();\n case \"SN1\":\n return \"Elområde 1\";\n case \"SN2\":\n return \"Elområde 2\";\n case \"SN3\":\n return \"Elområde 3\";\n case \"SN4\":\n return \"Elområde 4\";\n default:\n throw new Error(\n `[ Vattenfall Elements ] Invalid pipe argument for pipe 'unit'. The unit '${unit}' is not supported for this locale ${this.environment.locale}.`\n );\n }\n }\n private fi(value: string | null, unit: Unit) {\n switch (unit) {\n case \"KWH\":\n return `${value} kWh`;\n case \"MWH\":\n return `${value} MWh`;\n case \"GWH\":\n return `${value} GWh`;\n case \"UNIT_UNKNOWN\":\n return `${value}`;\n case \"EURO/MONTH\":\n return `${value} €/kk`;\n case \"EURO_CENT/KWH\":\n return `${value} snt/kWh`;\n case \"MONTH\":\n return `${value} kk`;\n case \"MONTHS\":\n return `${value} kk`;\n case \"KG/MONTH\":\n return `${value} kg/kk`;\n default:\n throw new Error(\n `[ Vattenfall Elements ] Invalid pipe argument for pipe 'unit'. The unit '${unit}' is not supported for this locale ${this.environment.locale}.`\n );\n }\n }\n}\n","/* eslint-disable @angular-eslint/directive-class-suffix */\n\nimport { Directive, Inject, Input, OnChanges, Optional, SimpleChanges } from \"@angular/core\";\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator, ValidatorFn, Validators } from \"@angular/forms\";\nimport {\n BooleanInput,\n coerceBooleanProperty,\n coerceDateProperty,\n coerceNumberProperty,\n InputDate,\n InputMonth,\n InputWeek,\n InputYear,\n NumberInput,\n} from \"@vattenfall/util\";\n\nimport { Environment, ENVIRONMENT } from \"../elements\";\n\nimport { ElementsValidators } from \"./validators\";\n\n/**\n * A base class for Validator-based Directives. The class contains common logic shared across such\n * Directives.\n *\n * For internal use only, this class is not intended for use outside of the Forms package.\n */\n@Directive()\nabstract class AbstractValidatorDirective implements Validator, OnChanges {\n private _validator: ValidatorFn = Validators.nullValidator;\n private _onChange!: () => void;\n\n /**\n * A flag that tracks whether this validator is enabled.\n *\n * Marking it `internal` (vs `protected`), so that this flag can be used in host bindings of\n * directive classes that extend this base class.\n */\n _enabled?: boolean;\n\n /**\n * Name of an input that matches directive selector attribute (e.g. `minlength` for\n * `MinLengthDirective`). An input with a given name might contain configuration information (like\n * `minlength='10'`) or a flag that indicates whether validator should be enabled (like\n * `[required]='false'`).\n */\n abstract inputName: string;\n\n /**\n * Creates an instance of a validator (specific to a directive that extends this base class).\n */\n abstract createValidator(input: unknown): ValidatorFn;\n\n /**\n * Performs the necessary input normalization based on a specific logic of a Directive.\n * For example, the function might be used to convert string-based representation of the\n * `minlength` input to an integer value that can later be used in the `Validators.minLength`\n * validator.\n */\n abstract normalizeInput(input: unknown): unknown;\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.inputName in changes) {\n const input = this.normalizeInput(changes[this.inputName].currentValue);\n this._enabled = this.enabled(input);\n this._validator = this._enabled ? this.createValidator(input) : Validators.nullValidator;\n if (this._onChange) {\n this._onChange();\n }\n }\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return this._validator(control);\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this._onChange = fn;\n }\n\n /**\n * Determines whether this validator should be active or not based on an input.\n * Base class implementation checks whether an input is defined (if the value is different from\n * `null` and `undefined`). Validator classes that extend this base class can override this\n * function with the logic specific to a particular validator directive.\n */\n enabled(input: unknown): boolean {\n return input != null /* both `null` and `undefined` */;\n }\n}\n\n/**\n * A directive that adds the `min` validator to controls marked with the\n * `min` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.\n */\n@Directive({\n selector: \"[type=number][min][formControlName],[type=number][min][formControl],[type=number][min][ngModel]\",\n providers: [{ provide: NG_VALIDATORS, useExisting: MinValidator, multi: true }],\n host: { \"[attr.min]\": \"_enabled ? min : null\" },\n})\nexport class MinValidator extends AbstractValidatorDirective {\n /**\n * The smallest number to accept for `value`.\n *\n * ```html\n * \n * \n * ```\n */\n @Input() min!: NumberInput;\n\n override inputName = \"min\";\n override normalizeInput = coerceNumberProperty;\n override createValidator = Validators.min;\n}\n\n/**\n * A directive that adds the `min` validator to controls marked with the\n * `min` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.\n */\n@Directive({\n selector: \"[type=date][min][formControlName],[type=date][min][formControl],[type=date][min][ngModel]\",\n providers: [{ provide: NG_VALIDATORS, useExisting: MinDateValidator, multi: true }],\n host: { \"[attr.min]\": \"_enabled ? min : null\" },\n})\nexport class MinDateValidator extends AbstractValidatorDirective {\n /**\n * The earliest date to accept for `value`.\n *\n * ```html\n * \n * \n * ```\n */\n @Input() min!: InputDate | Date;\n\n override inputName = \"min\";\n override normalizeInput = coerceDateProperty;\n override createValidator = ElementsValidators.minDate;\n}\n\n/**\n * A directive that adds the `min` validator to controls marked with the\n * `min` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.\n */\n@Directive({\n selector: \"[type=week][min][formControlName],[type=week][min][formControl],[type=week][min][ngModel]\",\n providers: [{ provide: NG_VALIDATORS, useExisting: MinWeekValidator, multi: true }],\n host: { \"[attr.min]\": \"_enabled ? min : null\" },\n})\nexport class MinWeekValidator extends AbstractValidatorDirective {\n /**\n * The earliest week to accept for `value`.\n *\n * ```html\n * \n * \n * ```\n */\n @Input() min!: InputWeek | Date;\n\n override inputName = \"min\";\n override normalizeInput = coerceDateProperty;\n override createValidator = ElementsValidators.minDate;\n}\n\n/**\n * A directive that adds the `min` validator to controls marked with the\n * `min` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.\n */\n@Directive({\n selector: \"[type=month][min][formControlName],[type=month][min][formControl],[type=month][min][ngModel]\",\n providers: [{ provide: NG_VALIDATORS, useExisting: MinMonthValidator, multi: true }],\n host: { \"[attr.min]\": \"_enabled ? min : null\" },\n})\nexport class MinMonthValidator extends AbstractValidatorDirective {\n /**\n * The earliest month to accept for `value`.\n *\n * ```html\n * \n * \n * ```\n */\n @Input() min!: InputMonth | Date;\n\n override inputName = \"min\";\n override normalizeInput = coerceDateProperty;\n override createValidator = ElementsValidators.minDate;\n}\n\n/**\n * A directive that adds the `min` validator to controls marked with the\n * `min` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.\n */\n@Directive({\n selector: \"[type=year][min][formControlName],[type=year][min][formControl],[type=year][min][ngModel]\",\n providers: [{ provide: NG_VALIDATORS, useExisting: MinYearValidator, multi: true }],\n host: { \"[attr.min]\": \"_enabled ? min : null\" },\n})\nexport class MinYearValidator extends AbstractValidatorDirective {\n /**\n * The earliest year to accept for `value`.\n *\n * ```html\n * \n * \n * ```\n */\n @Input() min!: InputYear | Date;\n\n override inputName = \"min\";\n override normalizeInput = coerceDateProperty;\n override createValidator = ElementsValidators.minDate;\n}\n\n/**\n * A directive that adds the `max` validator to controls marked with the\n * `max` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.\n */\n@Directive({\n selector: \"[type=number][max][formControlName],[type=number][max][formControl],[type=number][max][ngModel]\",\n providers: [{ provide: NG_VALIDATORS, useExisting: MaxValidator, multi: true }],\n host: { \"[attr.max]\": \"_enabled ? max : null\" },\n})\nexport class MaxValidator extends AbstractValidatorDirective {\n /**\n * The smallest number to accept for `value`.\n *\n * ```html\n * \n * \n * ```\n */\n @Input() max!: NumberInput;\n\n override inputName = \"max\";\n override normalizeInput = coerceNumberProperty;\n override createValidator = Validators.max;\n}\n\n/**\n * A directive that adds the `max` validator to controls marked with the\n * `max` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.\n */\n@Directive({\n selector: \"[type=date][max][formControlName],[type=date][max][formControl],[type=date][max][ngModel]\",\n providers: [{ provide: NG_VALIDATORS, useExisting: MaxDateValidator, multi: true }],\n host: { \"[attr.max]\": \"_enabled ? max : null\" },\n})\nexport class MaxDateValidator extends AbstractValidatorDirective {\n /**\n * The latest date to accept for `value`.\n *\n * ```html\n * \n * \n * ```\n */\n @Input() max!: InputDate | Date;\n\n override inputName = \"max\";\n override normalizeInput = coerceDateProperty;\n override createValidator = ElementsValidators.maxDate;\n}\n\n/**\n * A directive that adds the `max` validator to controls marked with the\n * `max` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.\n */\n@Directive({\n selector: \"[type=week][max][formControlName],[type=week][max][formControl],[type=week][max][ngModel]\",\n providers: [{ provide: NG_VALIDATORS, useExisting: MaxWeekValidator, multi: true }],\n host: { \"[attr.max]\": \"_enabled ? max : null\" },\n})\nexport class MaxWeekValidator extends AbstractValidatorDirective {\n /**\n * The latest week to accept for `value`.\n *\n * ```html\n * \n * \n * ```\n */\n @Input() max!: InputWeek | Date;\n\n override inputName = \"max\";\n override normalizeInput = coerceDateProperty;\n override createValidator = ElementsValidators.maxDate;\n}\n\n/**\n * A directive that adds the `max` validator to controls marked with the\n * `max` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.\n */\n@Directive({\n selector: \"[type=month][max][formControlName],[type=month][max][formControl],[type=month][max][ngModel]\",\n providers: [{ provide: NG_VALIDATORS, useExisting: MaxMonthValidator, multi: true }],\n host: { \"[attr.max]\": \"_enabled ? max : null\" },\n})\nexport class MaxMonthValidator extends AbstractValidatorDirective {\n /**\n * The latest month to accept for `value`.\n *\n * ```html\n * \n * \n * ```\n */\n @Input() max!: InputMonth | Date;\n\n override inputName = \"max\";\n override normalizeInput = coerceDateProperty;\n override createValidator = ElementsValidators.maxDate;\n}\n\n/**\n * A directive that adds the `max` validator to controls marked with the\n * `max` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.\n */\n@Directive({\n selector: \"[type=year][max][formControlName],[type=year][max][formControl],[type=year][max][ngModel]\",\n providers: [{ provide: NG_VALIDATORS, useExisting: MaxYearValidator, multi: true }],\n host: { \"[attr.max]\": \"_enabled ? max : null\" },\n})\nexport class MaxYearValidator extends AbstractValidatorDirective {\n /**\n * The latest year to accept for `value`.\n *\n * ```html\n * \n * \n * ```\n */\n @Input() max!: InputYear | Date;\n\n override inputName = \"max\";\n override normalizeInput = coerceDateProperty;\n override createValidator = ElementsValidators.maxDate;\n}\n\n/**\n * A directive that adds the `weekday` validator to controls marked with the\n * `weekday` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.\n */\n@Directive({\n selector: \"[type=date][weekday][formControlName],[type=date][weekday][formControl],[type=date][weekday][ngModel]\",\n providers: [{ provide: NG_VALIDATORS, useExisting: WeekdayValidator, multi: true }],\n host: { \"[attr.weekday]\": \"_enabled ? weekday : null\" },\n})\nexport class WeekdayValidator extends AbstractValidatorDirective implements OnChanges {\n /**\n * Validator that checks if the control's value matches a date represented as a string\n * that is not a weekend and/or a public holiday determent on the `ENVIRONMENT` injection token region.\n *\n * The following example shows how to add an weekday validator to an input attached to an ngModel\n * binding.\n *\n * ```html\n * \n * \n * \n * ```\n */\n @Input() weekday!: BooleanInput;\n\n override inputName = \"weekday\";\n override normalizeInput = coerceBooleanProperty;\n override createValidator = () => ElementsValidators.weekday(this.environment.region);\n override enabled(input: boolean): boolean {\n return input;\n }\n\n constructor(@Optional() @Inject(ENVIRONMENT) private environment: Environment) {\n super();\n }\n}\n\n/**\n * A directive that adds the `emailAddress` validator to controls marked with the\n * `emailAddress` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.\n */\n@Directive({\n selector: \"[emailAddress][formControlName],[emailAddress][formControl],[emailAddress][ngModel]\",\n providers: [{ provide: NG_VALIDATORS, useExisting: EmailAddressValidator, multi: true }],\n host: { \"[attr.emailAddress]\": \"_enabled ? emailAddress : null\" },\n})\nexport class EmailAddressValidator extends AbstractValidatorDirective {\n /**\n * Validator that checks if the control's value matches the pattern and algorithm\n * for a valid email address based on the `ENVIRONMENT` injection token region.\n *\n * The following example shows how to add an email address validator to an input attached to an ngModel\n * binding.\n *\n * ```html\n * \n * \n * \n * ```\n */\n @Input() emailAddress!: BooleanInput;\n\n override inputName = \"emailAddress\";\n override normalizeInput = coerceBooleanProperty;\n override createValidator = (): ValidatorFn => ElementsValidators.emailAddress(this.environment.region);\n override enabled(input: boolean): boolean {\n return input;\n }\n\n constructor(@Optional() @Inject(ENVIRONMENT) private environment: Environment) {\n super();\n }\n}\n\n/**\n * A directive that adds the `organizationNumber` validator to controls marked with the\n * `organizationNumber` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.\n */\n@Directive({\n selector: \"[organizationNumber][formControlName],[organizationNumber][formControl],[organizationNumber][ngModel]\",\n providers: [{ provide: NG_VALIDATORS, useExisting: OrganizationNumberValidator, multi: true }],\n host: { \"[attr.organizationNumber]\": \"_enabled ? organizationNumber : null\" },\n})\nexport class OrganizationNumberValidator extends AbstractValidatorDirective {\n /**\n * Validator that checks if the control's value matches the pattern and algorithm\n * for a valid organization number based on the `ENVIRONMENT` injection token region.\n *\n * The following example shows how to add an organization number validator to an input attached to an ngModel\n * binding.\n *\n * ```html\n * \n * \n * \n * ```\n */\n @Input() organizationNumber!: BooleanInput;\n\n override inputName = \"organizationNumber\";\n override normalizeInput = coerceBooleanProperty;\n override createValidator = (): ValidatorFn => ElementsValidators.organizationNumber(this.environment.region);\n override enabled(input: boolean): boolean {\n return input;\n }\n\n constructor(@Optional() @Inject(ENVIRONMENT) private environment: Environment) {\n super();\n }\n}\n\n/**\n * A directive that adds the `personalNumber` validator to controls marked with the\n * `personalNumber` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.\n */\n@Directive({\n selector: \"[personalNumber][formControlName],[personalNumber][formControl],[personalNumber][ngModel]\",\n providers: [{ provide: NG_VALIDATORS, useExisting: PersonalNumberValidator, multi: true }],\n host: { \"[attr.personalNumber]\": \"_enabled ? personalNumber : null\" },\n})\nexport class PersonalNumberValidator extends AbstractValidatorDirective implements OnChanges {\n /**\n * Validator that checks if the control's value matches the pattern and algorithm\n * for a valid personal number based on the `ENVIRONMENT` injection token region, and optionally, an age range.\n *\n * The following example shows how to add an personal number validator to an input attached to an ngModel\n * binding.\n *\n * ```html\n * \n * \n * \n * ```\n * The following example shows how to specify an age range in addition to the personal number validation.\n *\n * ```html\n * \n * ```\n */\n @Input() personalNumber!: BooleanInput;\n\n /**\n * Specifies the minimum age for personal number validation.\n */\n @Input() minAge?: NumberInput;\n\n /**\n * Specifies the maximum age for personal number validation.\n */\n @Input() maxAge?: NumberInput;\n\n override inputName = \"personalNumber\";\n override normalizeInput = coerceBooleanProperty;\n override createValidator = (): ValidatorFn =>\n ElementsValidators.personalNumber(\n this.environment.region,\n this.minAge ? coerceNumberProperty(this.minAge) : undefined,\n this.maxAge ? coerceNumberProperty(this.maxAge) : undefined\n );\n override enabled(input: boolean): boolean {\n return input;\n }\n\n constructor(@Optional() @Inject(ENVIRONMENT) private environment: Environment) {\n super();\n }\n}\n\n/**\n * A directive that adds the `phoneNumber` validator to controls marked with the\n * `phoneNumber` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.\n */\n@Directive({\n selector: \"[phoneNumber][formControlName],[phoneNumber][formControl],[phoneNumber][ngModel]\",\n providers: [{ provide: NG_VALIDATORS, useExisting: PhoneNumberValidator, multi: true }],\n host: { \"[attr.phoneNumber]\": \"_enabled ? phoneNumber : null\" },\n})\nexport class PhoneNumberValidator extends AbstractValidatorDirective implements OnChanges {\n /**\n * Validator that checks if the control's value matches the pattern for a valid phone number based\n * on the `ENVIRONMENT` injection token region.\n *\n * The following example shows how to add an phone number validator to an input attached to an ngModel\n * binding.\n *\n * ```html\n * \n * \n * \n * ```\n */\n @Input() phoneNumber!: BooleanInput;\n\n override inputName = \"phoneNumber\";\n override normalizeInput = coerceBooleanProperty;\n override createValidator = (): ValidatorFn => ElementsValidators.phoneNumber(this.environment.region);\n override enabled(input: boolean): boolean {\n return input;\n }\n\n constructor(@Optional() @Inject(ENVIRONMENT) private environment: Environment) {\n super();\n }\n}\n\n/**\n * A directive that adds the `premiseId` validator to controls marked with the\n * `premiseId` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.\n */\n@Directive({\n selector: \"[premiseId][formControlName],[premiseId][formControl],[premiseId][ngModel]\",\n providers: [{ provide: NG_VALIDATORS, useExisting: PremiseIdValidator, multi: true }],\n host: { \"[attr.premiseId]\": \"_enabled ? premiseId : null\" },\n})\nexport class PremiseIdValidator extends AbstractValidatorDirective {\n /**\n * Validator that checks if the control's value matches the pattern for a valid premise identifier based\n * on the `ENVIRONMENT` injection token region.\n *\n * The following example shows how to add an organization number validator to an input attached to an ngModel\n * binding.\n *\n * ```html\n * \n * \n * \n * ```\n */\n @Input() premiseId!: string | boolean;\n\n override inputName = \"premiseId\";\n override normalizeInput = coerceBooleanProperty;\n override createValidator = (): ValidatorFn => ElementsValidators.premiseId(this.environment.region);\n override enabled(input: boolean): boolean {\n return input;\n }\n\n constructor(@Optional() @Inject(ENVIRONMENT) private environment: Environment) {\n super();\n }\n}\n\n/**\n * A directive that adds the `postalCode` validator to controls marked with the\n * `postalCode` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.\n */\n@Directive({\n selector: \"[postalCode][formControlName],[postalCode][formControl],[postalCode][ngModel]\",\n providers: [{ provide: NG_VALIDATORS, useExisting: PostalCodeValidator, multi: true }],\n host: { \"[attr.postalCode]\": \"_enabled ? postalCode : null\" },\n})\nexport class PostalCodeValidator extends AbstractValidatorDirective {\n /**\n * Validator that checks if the control's value matches the pattern for a valid postal code based\n * on the `ENVIRONMENT` injection token region.\n *\n * The following example shows how to add a postal code validator to an input attached to an ngModel\n * binding.\n *\n * ```html\n * \n * \n * \n * ```\n */\n @Input() postalCode!: BooleanInput;\n /**\n * Specifies the international region regex for postal code validation.\n */\n @Input() internationalRegion?: BooleanInput;\n\n override inputName = \"postalCode\";\n override normalizeInput = coerceBooleanProperty;\n override createValidator = (): ValidatorFn =>\n ElementsValidators.postalCode(\n this.environment.region,\n this.internationalRegion ? coerceBooleanProperty(this.internationalRegion) : undefined\n );\n override enabled(input: boolean): boolean {\n return input;\n }\n\n constructor(@Optional() @Inject(ENVIRONMENT) private environment: Environment) {\n super();\n }\n}\n\n/**\n * A directive that adds the `password` validator to controls marked with the\n * `password` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.\n *\n * @todo Should support multi-regions\n */\n@Directive({\n selector: \"[password][formControlName],[password][formControl],[password][ngModel]\",\n providers: [{ provide: NG_VALIDATORS, useExisting: PasswordValidator, multi: true }],\n host: { \"[attr.password]\": \"_enabled ? password : null\" },\n})\nexport class PasswordValidator extends AbstractValidatorDirective {\n /**\n * Validator that checks if the control's value matches the pattern for a valid password.\n *\n * The following example shows how to add a password validator to an input attached to an ngModel\n * binding.\n *\n * ```html\n * \n * \n * \n * ```\n */\n @Input() password!: BooleanInput;\n\n override inputName = \"password\";\n override normalizeInput = coerceBooleanProperty;\n override createValidator = ElementsValidators.password;\n override enabled(input: boolean): boolean {\n return input;\n }\n}\n\n/**\n * A directive that adds the `gridAreaId` validator to controls marked with the\n * `gridAreaId` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.\n *\n * @todo Should support multi-regions\n */\n@Directive({\n selector: \"[gridAreaId][formControlName],[gridAreaId][formControl],[gridAreaId][ngModel]\",\n providers: [{ provide: NG_VALIDATORS, useExisting: GridAreaIdValidator, multi: true }],\n host: { \"[attr.gridAreaId]\": \"_enabled ? gridAreaId : null\" },\n})\nexport class GridAreaIdValidator extends AbstractValidatorDirective {\n /**\n * Validator that checks if the control's value matches the pattern for a valid grid area identifier.\n *\n * The following example shows how to add a grid area identifier validator to an input attached to an ngModel\n * binding.\n *\n * ```html\n * \n * \n * \n * ```\n */\n @Input() gridAreaId!: BooleanInput;\n\n override inputName = \"gridAreaId\";\n override normalizeInput = coerceBooleanProperty;\n override createValidator = ElementsValidators.gridAreaId;\n override enabled(input: boolean): boolean {\n return input;\n }\n}\n\n/**\n * A directive that adds the `streetName` validator to controls marked with the\n * `streetName` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.\n *\n * @todo Should support multi-regions\n */\n@Directive({\n selector: \"[streetName][formControlName],[streetName][formControl],[streetName][ngModel]\",\n providers: [{ provide: NG_VALIDATORS, useExisting: StreetNameValidator, multi: true }],\n host: { \"[attr.streetName]\": \"_enabled ? streetName : null\" },\n})\nexport class StreetNameValidator extends AbstractValidatorDirective {\n /**\n * Validator that checks if the control's value matches the pattern for a valid street name.\n *\n * The following example shows how to add a street name validator to an input attached to an ngModel\n * binding.\n *\n * ```html\n * \n * \n * \n * ```\n */\n @Input() streetName!: BooleanInput;\n\n override inputName = \"streetName\";\n override normalizeInput = coerceBooleanProperty;\n override createValidator = ElementsValidators.streetName;\n override enabled(input: boolean): boolean {\n return input;\n }\n}\n\n/**\n * A directive that adds the `careOfAddress` validator to controls marked with the\n * `careOfAddress` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.\n *\n * @todo Should support multi-regions\n */\n@Directive({\n selector: \"[careOfAddress][formControlName],[careOfAddress][formControl],[careOfAddress][ngModel]\",\n providers: [{ provide: NG_VALIDATORS, useExisting: CareOfAddressValidator, multi: true }],\n host: { \"[attr.careOfAddress]\": \"_enabled ? careOfAddress : null\" },\n})\nexport class CareOfAddressValidator extends AbstractValidatorDirective {\n /**\n * Validator that checks if the control's value matches the pattern for a valid care of address.\n *\n * The following example shows how to add a care of address validator to an input attached to an ngModel\n * binding.\n *\n * ```html\n * \n * \n * \n * ```\n */\n @Input() careOfAddress!: BooleanInput;\n\n override inputName = \"careOfAddress\";\n override normalizeInput = coerceBooleanProperty;\n override createValidator = ElementsValidators.careOfAddress;\n override enabled(input: boolean): boolean {\n return input;\n }\n}\n\n/**\n * A directive that adds the `postalTown` validator to controls marked with the\n * `postalTown` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.\n *\n * @todo Should support multi-regions\n */\n@Directive({\n selector: \"[postalTown][formControlName],[postalTown][formControl],[postalTown][ngModel]\",\n providers: [{ provide: NG_VALIDATORS, useExisting: PostalTownValidator, multi: true }],\n host: { \"[attr.postalTown]\": \"_enabled ? postalTown : null\" },\n})\nexport class PostalTownValidator extends AbstractValidatorDirective {\n /**\n * Validator that checks if the control's value matches the pattern for a valid postal town.\n *\n * The following example shows how to add a postal town validator to an input attached to an ngModel\n * binding.\n *\n * ```html\n * \n * \n * \n * ```\n */\n @Input() postalTown!: BooleanInput;\n\n override inputName = \"postalTown\";\n override normalizeInput = coerceBooleanProperty;\n override createValidator = ElementsValidators.postalTown;\n override enabled(input: boolean): boolean {\n return input;\n }\n}\n","/**\n * @todo Break out each method of `ElementsValidators` into a separate function to optimize the code for tree-shaking.\n * @todo The grid area ID validator should have one variation for Finland and one for Sweden.\n * @todo Handle errors using global error handler.\n */\n\nimport { AbstractControl, ValidationErrors, ValidatorFn } from \"@angular/forms\";\nimport {\n isValidAgeRange,\n isValidFinnishBusinessNumber,\n isValidFinnishEmailAddress,\n isValidFinnishPersonalNumber,\n isValidFinnishPhoneNumber,\n isValidFinnishPostalCode,\n isValidGridAreaId,\n isValidInternationalPostalCode,\n isValidPassword,\n isValidSwedishBusinessNumber,\n isValidSwedishEmailAddress,\n isValidSwedishPersonalNumber,\n isValidSwedishPhoneNumber,\n isValidSwedishPostalCode,\n isValidSwedishPremiseId,\n isValidStreetName,\n isValidCareOfAddress,\n isValidSwedishFinnishPostalTown,\n isValidSwedishWeekday,\n isValidFinnishWeekday,\n isAfter,\n isBefore,\n dateFromInput,\n InputType,\n isInputType,\n coerceDateProperty,\n isEqual,\n startOfDay,\n} from \"@vattenfall/util\";\n\nimport { Region } from \"../elements/elements\";\n\n/**\n * Utility to check if the provided value for a form control is empty or null.\n * @param value - The value to be checked.\n * @returns `true` if the value is null or an empty string, otherwise `false`.\n */\nfunction isEmptyInputValue(value: unknown): boolean {\n return value == null || (typeof value === \"string\" && value.length === 0);\n}\n\n/**\n * A collection of validators specifically built for Vattenfall Elements.\n *\n * Each validator ensures that the provided data adheres to specific regional patterns\n * or requirements, such as Swedish and Finnish phone numbers, postal codes, etc.\n */\nexport class ElementsValidators {\n /**\n * Validator that checks if the control's value corresponds to a properly formatted email address\n * with an official domain extension based on the specified region.\n *\n * @param region Specifies the region ('se' or 'fi') for which the validation applies.\n * @returns An error map with the `emailAddress` property if validation fails; otherwise, null.\n *\n * ### Example:\n * ```typescript\n * const controlSE = new FormControl('firstname.lastname@gmail.com', ElementsValidators.emailAddress(\"se\"));\n * console.log(controlSE.errors); // { emailAddress: true } or null\n *\n * const controlFI = new FormControl('firstname.lästname@gmail.com', ElementsValidators.emailAddress(\"fi\"));\n * console.log(controlFI.errors); // { emailAddress: true } or null\n * ```\n */\n static emailAddress(region: Region): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (isEmptyInputValue(control.value)) return null;\n switch (region) {\n case \"fi\":\n return isValidFinnishEmailAddress(control.value) ? null : { emailAddress: true };\n case \"se\":\n return isValidSwedishEmailAddress(control.value) ? null : { emailAddress: true };\n default:\n throw Error(\n `[ Vattenfall Elements ] The provided region '${region}' is not supported by the validator 'emailAddress'.`\n );\n }\n };\n }\n\n /**\n * Validator that checks if the control's value matches the pattern and algorithm\n * for a valid organization number based on the specified region.\n *\n * @param region Specifies the region ('se' or 'fi') for which the validation applies.\n * @returns An error map with the `organizationNumber` property if validation fails; otherwise, null.\n *\n * ### Example:\n * ```typescript\n * const control = new FormControl('556036-2138', ElementsValidators.organizationNumber(\"se\"));\n * console.log(control.errors); // { organizationNumber: true } or null\n * ```\n */\n static organizationNumber(region: Region): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (isEmptyInputValue(control.value)) return null;\n switch (region) {\n case \"fi\":\n return isValidFinnishBusinessNumber(control.value) ? null : { organizationNumber: true };\n case \"se\":\n return isValidSwedishBusinessNumber(control.value) ? null : { organizationNumber: true };\n default:\n throw Error(\n `[ Vattenfall Elements ] The provided region '${region}' is not supported by the validator 'organizationNumber'.`\n );\n }\n };\n }\n\n /**\n * Validator that checks if the control's value matches the pattern and algorithm\n * for a valid personal number based on the specified region, and optionally, an age range.\n *\n * @param region Specifies the region ('se' or 'fi') for which the validation applies.\n * @param minAge (Optional) The minimum acceptable age.\n * @param maxAge (Optional) The maximum acceptable age.\n * @returns An error map with the `personalNumber` or `personalNumberAge` property if validation fails; otherwise, null.\n *\n * ### Example:\n * ```typescript\n * const controlFI = new FormControl('220556-029L', ElementsValidators.personalNumber(\"fi\"));\n * console.log(controlFI.errors); // { personalNumber: true } or null\n *\n * const controlSE = new FormControl('640823-3234', ElementsValidators.personalNumber(\"se\"));\n * console.log(controlSE.errors); // { personalNumber: true } or null\n * ```\n */\n static personalNumber(region: Region, minAge?: number, maxAge?: number): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (isEmptyInputValue(control.value)) return null;\n switch (region) {\n case \"fi\":\n if (isValidFinnishPersonalNumber(control.value))\n if (isValidAgeRange(control.value, region, minAge, maxAge)) return null;\n else return { personalNumberAge: true };\n else return { personalNumber: true };\n case \"se\":\n if (isValidSwedishPersonalNumber(control.value))\n if (isValidAgeRange(control.value, region, minAge, maxAge)) return null;\n else return { personalNumberAge: true };\n else return { personalNumber: true };\n default:\n throw Error(\n `[ Vattenfall Elements ] The provided region '${region}' is not supported by the validator 'personalNumber'.`\n );\n }\n };\n }\n\n /**\n * Validator that checks if the control's value matches the pattern and algorithm\n * for a valid phone number based on the specified region.\n *\n * @param region Specifies the region ('se' or 'fi') for which the validation applies.\n * @returns An error map with the `phoneNumber` property if validation fails; otherwise, null.\n *\n * ### Example:\n * ```typescript\n * const controlFI = new FormControl('+358406361091', ElementsValidators.phoneNumber(\"fi\"));\n * console.log(controlFI.errors); // Outputs: { phoneNumber: true } or null\n *\n * const controlSE = new FormControl('+4620-820000', ElementsValidators.phoneNumber(\"se\"));\n * console.log(controlSE.errors); // Outputs: { phoneNumber: true } or null\n * ```\n */\n static phoneNumber(region: Region): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (isEmptyInputValue(control.value)) return null;\n switch (region) {\n case \"fi\":\n return isValidFinnishPhoneNumber(control.value) ? null : { phoneNumber: true };\n case \"se\":\n return isValidSwedishPhoneNumber(control.value) ? null : { phoneNumber: true };\n default:\n throw Error(`[ Vattenfall Elements ] The provided region '${region}' is not supported by the validator 'phoneNumber'.`);\n }\n };\n }\n\n /**\n * Validator that checks if the control's value matches the pattern for a valid premise id in the specified region.\n *\n * @param region Specifies the region ('se') for which the validation applies.\n * @returns An error map with the `premiseId` property if validation fails; otherwise, null.\n *\n * ### Example:\n * ```typescript\n * const control = new FormControl('735999100054384456', ElementsValidators.premiseId(\"se\"));\n * console.log(control.errors); // Outputs: { premiseId: true } or null\n * ```\n */\n static premiseId(region: Region): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (isEmptyInputValue(control.value)) return null;\n switch (region) {\n case \"se\":\n return isValidSwedishPremiseId(control.value) ? null : { premiseId: true };\n default:\n throw Error(`[ Vattenfall Elements ] The provided region '${region}' is not supported by the validator 'premiseId'.`);\n }\n };\n }\n\n /**\n * Validator that checks if the control's value matches the pattern and algorithm\n * for a valid postal code based on the specified region.\n *\n * @param region Specifies the region ('se', 'fi') for which the validation applies.\n * @param useInternationalPostalCode Specifies the region (true) for which the validation applies.\n * @returns An error map with the `postalCode` property if validation fails; otherwise, null.\n *\n * ### Example:\n * ```typescript\n * const controlFI = new FormControl('62100', ElementsValidators.postalCode(\"fi\"));\n * console.log(controlFI.errors); // Outputs: { postalCode: true } or null\n *\n * const controlSE = new FormControl('16956', ElementsValidators.postalCode(\"se\"));\n * console.log(controlSE.errors); // Outputs: { postalCode: true } or null\n * ```\n */\n static postalCode(region: Region, useInternationalPostalCode?: boolean): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (isEmptyInputValue(control.value)) return null;\n\n let isValidPostalCode: (value: string) => boolean;\n\n if (useInternationalPostalCode === true) {\n isValidPostalCode = isValidInternationalPostalCode;\n } else {\n switch (region) {\n case \"fi\":\n isValidPostalCode = isValidFinnishPostalCode;\n break;\n case \"se\":\n isValidPostalCode = isValidSwedishPostalCode;\n break;\n default:\n throw Error(\n `[ Vattenfall Elements ] The provided region '${region}' is not supported by the validator 'postalCode'.`\n );\n }\n }\n return isValidPostalCode(control.value) ? null : { postalCode: true };\n };\n }\n\n /**\n * Validator that checks if the control's value corresponds to a weekday,\n * excluding weekends and public holidays, based on the specified region.\n *\n * @param region Specifies the region ('se' or 'fi') for which the validation applies.\n * @returns An error map with the `weekday` property if validation fails; otherwise, null.\n *\n * ### Example:\n * ```typescript\n * const controlFI = new FormControl(new Date(\"2023-09-14\"), ElementsValidators.weekday(\"fi\"));\n * console.log(controlFI.errors); // Outputs: { weekday: true } or null\n *\n * const controlSE = new FormControl(new Date(\"2023-09-14\"), ElementsValidators.weekday(\"se\"));\n * console.log(controlSE.errors); // Outputs: { weekday: true } or null\n * ```\n */\n static weekday(region: Region): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (isEmptyInputValue(control.value)) return null;\n const value = dateFromInput(control.value);\n switch (region) {\n case \"fi\":\n return isValidFinnishWeekday(value) ? null : { weekday: true };\n case \"se\":\n return isValidSwedishWeekday(value) ? null : { weekday: true };\n default:\n throw Error(`[ Vattenfall Elements ] The provided region '${region}' is not supported by the validator 'weekday'.`);\n }\n };\n }\n\n /**\n * Validator that checks if the control's value is after a specified date.\n *\n * @param min Specifies the minimum date to compare with. Can be in the form of a `Date` object or string representing a date, week, month or year.\n * @returns An error map with the `minDate` property if validation fails; otherwise, null.\n *\n * ### Example:\n * ```typescript\n * const control = new FormControl(new Date('2023-09-15'), ElementsValidators.minDate('2023-09-01'));\n * console.log(control.errors); // Outputs: {minDate: true} or null\n * ```\n */\n static minDate(min: InputType | Date): ValidatorFn {\n const minDate = startOfDay(coerceDateProperty(min));\n return (control: AbstractControl): ValidationErrors | null => {\n if (isEmptyInputValue(control.value)) return null;\n if (!isInputType(control.value)) return null;\n if (!minDate) return null;\n const date = startOfDay(coerceDateProperty(control.value));\n if (isEqual(date, minDate) || isAfter(date, minDate)) return null;\n return { minDate: true };\n };\n }\n\n /**\n * Validator that checks if the control's value is before a specified date.\n *\n * @param max Specifies the maximum date to compare with. Can be in the form of a `Date` object or string representing a date, week, month or year.\n * @returns An error map with the `maxDate` property if validation fails; otherwise, null.\n *\n * ### Example:\n * ```typescript\n * const control = new FormControl(new Date('2023-09-15'), ElementsValidators.maxDate('2023-10-01'));\n * console.log(control.errors); // Outputs: {maxDate: true} or null\n * ```\n */\n static maxDate(max: InputType | Date): ValidatorFn {\n const maxDate = startOfDay(coerceDateProperty(max));\n return (control: AbstractControl): ValidationErrors | null => {\n if (isEmptyInputValue(control.value)) return null;\n if (!isInputType(control.value)) return null;\n if (!maxDate) return null;\n const date = startOfDay(coerceDateProperty(control.value));\n if (isEqual(date, maxDate) || isBefore(date, maxDate)) return null;\n return { maxDate: true };\n };\n }\n\n /**\n * Validator that checks if the control's value matches a valid password pattern.\n *\n * @returns An error map with the `password` property if validation fails; otherwise, null.\n *\n * ### Example:\n * ```typescript\n * const control = new FormControl('azAZ09!@#$%^&*', ElementsValidators.password());\n * console.log(control.errors); // Outputs: {password: true} or null\n * ```\n */\n static password(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (isEmptyInputValue(control.value)) return null;\n return isValidPassword(control.value) ? null : { password: true };\n };\n }\n\n /**\n * Validator that checks if the control's value matches a valid grid area ID.\n *\n * @returns An error map with the `gridAreaId` property if validation fails; otherwise, null.\n *\n * ### Example:\n * ```typescript\n * const control = new FormControl('STH', ElementsValidators.gridAreaId());\n * console.log(control.errors); // Outputs: {gridAreaId: true} or null\n * ```\n */\n static gridAreaId(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (isEmptyInputValue(control.value)) return null;\n return isValidGridAreaId(control.value) ? null : { gridAreaId: true };\n };\n }\n\n /**\n * Validator that checks if the control's value adheres to the expected pattern for a street name.\n *\n * @returns An error map with the `streetName` property if validation fails; otherwise, null.\n *\n * ### Example:\n * ```typescript\n * const control = new FormControl('Main St.', ElementsValidators.streetName());\n * console.log(control.errors); // Outputs: {streetName: true} or null\n * ```\n */\n static streetName(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (isEmptyInputValue(control.value)) return null;\n return isValidStreetName(control.value) ? null : { streetName: true };\n };\n }\n\n /**\n * Validator that checks if the control's value adheres to the expected format for a care-of address.\n *\n * @returns An error map with the `careOfAddress` property if validation fails; otherwise, null.\n *\n * ### Example:\n * ```typescript\n * const control = new FormControl('John Doe', ElementsValidators.careOfAddress());\n * console.log(control.errors); // Outputs: {careOfAddress: true} or null\n * ```\n */\n static careOfAddress(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n return isValidCareOfAddress(control.value) ? null : { careOfAddress: true };\n };\n }\n\n /**\n * Validator that checks if the control's value adheres to the expected format for a postal town.\n *\n * @returns An error map with the `postalTown` property if validation fails; otherwise, null.\n *\n * ### Example:\n * ```typescript\n * const control = new FormControl('Örebro', ElementsValidators.postalTown());\n * console.log(control.errors); // Outputs: {postalTown: true} or null\n * ```\n */\n static postalTown(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (isEmptyInputValue(control.value)) return null;\n return isValidSwedishFinnishPostalTown(control.value) ? null : { postalTown: true };\n };\n }\n}\n","export const environment = {\n production: true,\n};\n","import { enableProdMode, StaticProvider } from \"@angular/core\";\nimport { platformBrowserDynamic } from \"@angular/platform-browser-dynamic\";\nimport { createElementsClass, Elements } from \"@vattenfall/core\";\n\nimport { environment } from \"./environments/environment\";\n\nif (environment.production) {\n enableProdMode();\n}\n\n// Callback function invoked once static providers has been resolved\nasync function onStaticProvidersResolved(staticProviders: StaticProvider[]) {\n const bootstrapModule = await import(\"./app/app.module\").then((appModule) => appModule.AppModule);\n // Bootstrap module\n return platformBrowserDynamic(staticProviders).bootstrapModule(bootstrapModule);\n}\n\ndeclare global {\n interface Window {\n // eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/ban-types\n ElementsNext: typeof Elements;\n }\n}\n\n// Setting the class to a property of the window object makes it\n// accessible from outside this module\nwindow.ElementsNext = createElementsClass(onStaticProvidersResolved, environment.production);\n","import { all, allPass, always, anyPass, ifElse, is, isEmpty, isNil, map, pipe, values, when } from \"ramda\";\n\nimport { evolveAny } from \"./evolve-any\";\n\n/**\n * Returns `true` if the value is an empty object, empty array, empty string, undefined or null.\n */\nexport const isNullable = anyPass([isEmpty, isNil]);\n\n/**\n * Returns `true` if all values of an object or array are nullable.\n */\nexport const isNullableObject = allPass([is(Object), pipe(values, all(isNullable))]);\n\n/**\n * Updates all nullable values in an object to `null`.\n *\n * **Input**\n *\n * ```\n * {\n * aaa: undefined,\n * bbb: \"\",\n * ccc: {},\n * ddd: [],\n * eee: null,\n * fff: {\n * ggg: \"\"\n * },\n * hhh: 111\n * }\n * ```\n * **Output**\n *\n * ```\n * {\n * aaa: null,\n * bbb: null,\n * ccc: null,\n * ddd: null,\n * eee: null,\n * fff: null,\n * hhh: 111\n * }\n * ```\n */\nexport function nullify(value: unknown): Record | Array | null {\n return pipe(\n // @ts-ignore Overriding typechecker because issues in Ramda typings package that we are not maintaining. We are getting issues only when building using NPM package manager.\n when(isNullable, always(null)),\n // @ts-ignore Overriding typechecker because issues in Ramda typings package that we are not maintaining. We are getting issues only when building using NPM package manager.\n when(is(Object), ifElse(is(Array), map(nullify), evolveAny(nullify))),\n // @ts-ignore Overriding typechecker because issues in Ramda typings package that we are not maintaining. We are getting issues only when building using NPM package manager.\n when(isNullableObject, always(null))\n )(value) as unknown as Record | Array | null;\n}\n","/**\n * Performs a deep merge of `source` into `target`. Mutates `target` only but not its objects and arrays.\n */\n// Allowing the use of 'any' type because the type 'object' is discouraged by eslint.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function mergeDeep(target: any, source: any): T {\n const isObject = (obj: unknown | unknown) => obj && typeof obj === \"object\";\n\n if (!isObject(target) || !isObject(source)) {\n return source;\n }\n\n Object.keys(source).forEach((key) => {\n const targetValue = target[key];\n const sourceValue = source[key];\n\n if (Array.isArray(targetValue) && Array.isArray(sourceValue)) {\n target[key] = targetValue.concat(sourceValue);\n } else if (isObject(targetValue) && isObject(sourceValue)) {\n target[key] = mergeDeep(Object.assign({}, targetValue), sourceValue);\n } else {\n target[key] = sourceValue;\n }\n });\n\n return target;\n}\n","/**\n * Generates a random unique identifier as a hash value\n */\nexport function uuid() {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, (character) => {\n const randomNumber = (Math.random() * 16) | 0,\n value = character == \"x\" ? randomNumber : (randomNumber & 0x3) | 0x8;\n return value.toString(16);\n });\n}\n","import { isNullable } from \"./nullify\";\n\nexport type SearchParams = {\n [key: string]: string | number;\n};\n\n/**\n * Constructs a HREF from a base URL and search parameters.\n */\nexport function getURL(baseUrl?: string | null, searchParams?: SearchParams) {\n const url = new URL(baseUrl ?? \"\");\n if (searchParams)\n for (const [key, value] of Object.entries(searchParams))\n if (!isNullable(value)) url.searchParams.append(key, value.toString());\n return url.href;\n}\n","/**\n * Type describing the allowed values for a boolean input.\n */\nexport type BooleanInput = string | boolean | null | undefined;\n\n/**\n * Coerces a data-bound value (typically a string) to a boolean.\n *\n * This is useful when declaring component inputs as standard HTML properties such as `disabled`,\n * where `` should resolve to `true` and not `undefined`, and for example ``\n * should resolve to `false` and not `\"false\"`.\n */\nexport function coerceBooleanProperty(value: unknown): boolean {\n return value != null && `${value}` !== \"false\";\n}\n","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport default function startOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport default function startOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var cleanDate = toDate(dirtyDate);\n var date = new Date(0);\n date.setFullYear(cleanDate.getFullYear(), 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","var defaultOptions = {};\nexport function getDefaultOptions() {\n return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the start of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setDate(date.getDate() - diff);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n return startOfWeek(dirtyDate, {\n weekStartsOn: 1\n });\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Number} the local week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport default function getWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n var startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n var startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getWeekYear from \"../getWeekYear/index.js\";\nimport startOfWeek from \"../startOfWeek/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Date} the start of a week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport default function startOfWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getWeekYear(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n var date = startOfWeek(firstWeek, options);\n return date;\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport startOfWeekYear from \"../startOfWeekYear/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Number} the week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\n\nexport default function getWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfWeek(date, options).getTime() - startOfWeekYear(date, options).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} - the new date with the days added\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport default function addDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n date.setDate(date.getDate() + amount);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDay\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {0|1|2|3|4|5|6} the day of week, 0 represents Sunday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * const result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\nexport default function getDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var day = date.getDay();\n return day;\n}","import addDays from \"../addDays/index.js\";\nimport getDay from \"../getDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name nextDay\n * @category Weekday Helpers\n * @summary When is the next day of the week?\n *\n * @description\n * When is the next day of the week? 0-6 the day of the week, 0 represents Sunday.\n *\n * @param {Date | number} date - the date to check\n * @param {Day} day - day of the week\n * @returns {Date} - the date is the next day of week\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // When is the next Monday after Mar, 20, 2020?\n * const result = nextDay(new Date(2020, 2, 20), 1)\n * //=> Mon Mar 23 2020 00:00:00\n *\n * @example\n * // When is the next Tuesday after Mar, 21, 2020?\n * const result = nextDay(new Date(2020, 2, 21), 2)\n * //=> Tue Mar 24 2020 00:00:00\n */\nexport default function nextDay(date, day) {\n requiredArgs(2, arguments);\n var delta = day - getDay(date);\n if (delta <= 0) delta += 7;\n return addDays(date, delta);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which year is 2 July 2014?\n * const result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\nexport default function getYear(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getFullYear();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getMonth\n * @category Month Helpers\n * @summary Get the month of the given date.\n *\n * @description\n * Get the month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which month is 29 February 2012?\n * const result = getMonth(new Date(2012, 1, 29))\n * //=> 1\n */\nexport default function getMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n return month;\n}","import toDate from \"../toDate/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport default function getISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n var startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n var startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getISOWeekYear from \"../getISOWeekYear/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport default function startOfISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n var date = startOfISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport startOfISOWeekYear from \"../startOfISOWeekYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport default function getISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfISOWeek(date).getTime() - startOfISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDate\n * @category Day Helpers\n * @summary Get the day of the month of the given date.\n *\n * @description\n * Get the day of the month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the day of month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the month is 29 February 2012?\n * const result = getDate(new Date(2012, 1, 29))\n * //=> 29\n */\nexport default function getDate(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var dayOfMonth = date.getDate();\n return dayOfMonth;\n}","import {\n getYear,\n getMonth,\n getISOWeek,\n getDate,\n endOfDay,\n nextMonday,\n setWeek,\n startOfDay,\n startOfMonth,\n endOfMonth,\n endOfISOWeek,\n endOfYear,\n startOfISOWeek,\n startOfYear,\n} from \"date-fns\";\nimport finnishPublicHolidays from \"finnish-holidays-js\";\nimport { isPublicHoliday } from \"swedish-holidays\";\n\n// TODO (stefan): Sophisticated types for HTML input strings.\n// Currently not a viable option in TypeScript but might work better in later versions.\n// Leaving them here for now.\n\n// type YYYY = `20${0 | 1 | 2 | 3}${Digits}`;\n\ntype Digits = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;\n\n/**\n * Years\n */\ntype YYYY = `${number}`;\n\n/**\n * Months\n */\ntype MM = `0${Exclude}` | `1${0 | 1 | 2}`;\n\n/**\n * Weeks\n */\ntype WW = `0${Exclude}` | `${1 | 2 | 3 | 4}${0 | Digits}` | `5${0 | 1 | 2}`;\n\n/**\n * Days\n */\ntype DD = `0${Exclude}` | `${1 | 2}${0 | Digits}` | `3${0 | 1}`;\n\n/**\n * Date presented as string, e.g. `2022-11-12`\n */\nexport type InputDate = `${YYYY}-${MM}-${DD}`;\n\n/**\n * Week presented as string, e.g. `2022-W12`\n */\nexport type InputWeek = `${YYYY}-W${WW}`;\n\n/**\n * Month presented as string, e.g. `2022-11`\n */\nexport type InputMonth = `${YYYY}-${MM}`;\n\n/**\n * Month presented as string, e.g. `2022`\n */\nexport type InputYear = `${YYYY}`;\n\n/**\n * Name of possible `HTMLInput` date strings types.\n */\nexport type InputName = \"year\" | \"month\" | \"week\" | \"date\";\n\n/**\n * Types of possible `HTMLInput` date strings.\n */\nexport type InputType = InputDate | InputWeek | InputMonth | InputYear;\n\n/**\n * Date units extracted from a `Date`\n */\nexport type InputDateUnits = {\n year: YYYY;\n month: MM;\n week: WW;\n date: DD;\n};\n\n/** Highest date supported by JavaScript Date object (100 000 000 days after unix epoch). */\nexport const HIGHEST_DATE = new Date(8640000000000000);\n\n/** Lowest date supported by JavaScript Date object (100 000 000 days before unix epoch). */\nexport const LOWEST_DATE = new Date(-8640000000000000);\n\n/** Parse a date format string into a `RegExp` pattern string. */\nexport function patternFromFormat(format: string): string {\n const grouped = format.match(/'[^']*'|(.)\\1*/g);\n if (grouped)\n return grouped\n .map((phrase) => {\n if (/'([^']+)'/.test(phrase)) return phrase.replace(/'/g, \"\");\n if (/[Yy|Mm|Dd|Ww]/.test(phrase)) return `(?!0+$)\\\\d{${phrase.length}}`;\n return phrase;\n })\n .join(\"\");\n return \"\";\n}\n\n/** Parse a `Date` object or date represented as a `number` into a `HTMLInput` string. */\nexport function inputFromDate(type: InputName, input?: string | Date | number | null): T | null {\n if (!input) return null;\n if (typeof input === \"string\") return input as T;\n const date = new Date(input);\n if (type === \"date\") return getInputDate(date) as T;\n if (type === \"month\") return getInputMonth(date) as T;\n if (type === \"year\") return getInputYear(date) as T;\n if (type === \"week\") return getInputWeek(date) as T;\n throw TypeError(`The provided type '${type}' is invalid. Should be 'date', 'month', 'year' or 'week'.`);\n}\n\n/** Parse a date string from a `HTMLInputElement` into a `Date` object. */\nexport function dateFromInput(input: InputType): Date {\n if (isInputDate(input)) return startOfDay(new Date(input));\n if (isInputMonth(input)) return startOfMonth(new Date(input));\n if (isInputYear(input)) return startOfYear(new Date(input));\n if (isInputWeek(input)) {\n const [year, week] = input.split(\"-W\").map(Number);\n return startOfISOWeek(\n setWeek(nextMonday(new Date(year, 0, 4)), week, {\n // Start week on Monday (not Sunday which is 0)\n weekStartsOn: 1,\n // The day of January, which is always in the first week of the year\n firstWeekContainsDate: 4,\n })\n );\n }\n throw TypeError(\n `The provided input '${input}' is invalid. Should be of format 2022-01-01 for dates, 2022-01 for months, and 2022-W01 for weeks.`\n );\n}\n\n/** Parse a date string from a `HTMLInput` element into a `Interval` object. */\nexport function dateRangeFromInput(input: T): Interval {\n const start = dateFromInput(input);\n if (isInputDate(input)) return { start, end: endOfDay(start) };\n if (isInputMonth(input)) return { start, end: endOfMonth(start) };\n if (isInputYear(input)) return { start, end: endOfYear(start) };\n if (isInputWeek(input)) return { start, end: endOfISOWeek(start) };\n throw TypeError(\n `The provided input '${input}' is invalid. Should be of format 2022-01-01 for dates, 2022-01 for months, and 2022-W01 for weeks.`\n );\n}\n\n/** Converts UTF date to browser local time zone. */\nexport function getLocalDate(date: Date) {\n return new Date(date.getTime() - date.getTimezoneOffset() * 60 * 1000);\n}\n\n/** Parse ´Date´ object to a `HTMLInput` date string. */\nexport function getInputDate(date: Date): InputDate {\n const dateUnits = getInputDateUnits(startOfDay(date));\n return `${dateUnits.year}-${dateUnits.month}-${dateUnits.date}`;\n}\n\n/** Parse ´Date´ object to a `HTMLInput` week string. */\nexport function getInputWeek(date: Date): InputWeek {\n const dateUnits = getInputDateUnits(startOfISOWeek(date));\n return `${dateUnits.year}-W${dateUnits.week}`;\n}\n\n/** Parse ´Date´ object to a `HTMLInput` month string. */\nexport function getInputMonth(date: Date): InputMonth {\n const dateUnits = getInputDateUnits(startOfMonth(date));\n return `${dateUnits.year}-${dateUnits.month}`;\n}\n\n/** Parse ´Date´ object to a `HTMLInput` year string. */\nexport function getInputYear(date: Date): InputYear {\n const dateUnits = getInputDateUnits(startOfYear(date));\n return `${dateUnits.year}`;\n}\n\n/** Whether the provided input is of type `InputDate` */\nexport function isInputDate(input: string): input is InputDate {\n return /^\\d{4}-\\d{2}-\\d{2}$/.test(input);\n}\n\n/** Whether the provided input is of type `InputWeek` */\nexport function isInputWeek(input: string): input is InputWeek {\n return /^\\d{4}-W\\d{2}$/.test(input);\n}\n\n/** Whether the provided input is of type `InputMonth` */\nexport function isInputMonth(input: string): input is InputMonth {\n return /^\\d{4}-\\d{2}$/.test(input);\n}\n\n/** Whether the provided input is of type `InputYear` */\nexport function isInputYear(input: string): input is InputYear {\n return /^\\d{4}$/.test(input);\n}\n\n/** Whether the provided input is of type `InputType` */\nexport function isInputType(input: unknown): input is InputType {\n return typeof input === \"string\" && (isInputDate(input) || isInputWeek(input) || isInputMonth(input) || isInputYear(input));\n}\n\n/** Whether the provided date is a Swedish public holiday. */\nexport function isSwedishPublicHoliday(date: Date) {\n return isPublicHoliday(date);\n}\n\n/** Whether the provided date is a Finnish public holiday. */\nexport function isFinnishPublicHoliday(date: Date) {\n const dateUnit = getDateUnits(date);\n const publicHolidays = finnishPublicHolidays.month(dateUnit.month, dateUnit.year, true);\n return publicHolidays.some((publicHoliday) => publicHoliday.day === dateUnit.date);\n}\n\n/** Extracts date units (year, month, date, week) from `Date` object. */\nfunction getDateUnits(date: Date) {\n return {\n year: getYear(date),\n month: getMonth(date) + 1,\n week: getISOWeek(date),\n date: getDate(date),\n };\n}\n\n/** Extracts input date units (year, month, date, week) from `Date` object. */\nfunction getInputDateUnits(date: Date): InputDateUnits {\n const dateUnits = getDateUnits(date);\n return {\n year: dateUnits.year.toString() as YYYY,\n month: dateUnits.month.toString().padStart(2, \"0\") as MM,\n week: dateUnits.week.toString().padStart(2, \"0\") as WW,\n date: dateUnits.date.toString().padStart(2, \"0\") as DD,\n };\n}\n","import getWeek from \"../getWeek/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name setWeek\n * @category Week Helpers\n * @summary Set the local week to the given date.\n *\n * @description\n * Set the local week to the given date, saving the weekday number.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} week - the week of the new date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Date} the new date with the local week set\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Set the 1st week to 2 January 2005 with default options:\n * const result = setWeek(new Date(2005, 0, 2), 1)\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // Set the 1st week to 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January:\n * const result = setWeek(new Date(2005, 0, 2), 1, {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Sun Jan 4 2004 00:00:00\n */\nexport default function setWeek(dirtyDate, dirtyWeek, options) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var week = toInteger(dirtyWeek);\n var diff = getWeek(date, options) - week;\n date.setDate(date.getDate() - diff * 7);\n return date;\n}","import nextDay from \"../nextDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name nextMonday\n * @category Weekday Helpers\n * @summary When is the next Monday?\n *\n * @description\n * When is the next Monday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the next Monday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the next Monday after Mar, 22, 2020?\n * const result = nextMonday(new Date(2020, 2, 22))\n * //=> Mon Mar 23 2020 00:00:00\n */\nexport default function nextMonday(date) {\n requiredArgs(1, arguments);\n return nextDay(date, 1);\n}","import { dateFromInput, InputDate, InputType, isInputType } from \"./date\";\n\n/**\n * Type describing the allowed values for a date input\n */\nexport type DateInput = Date | InputDate | null | undefined;\n\nfunction isDate(value: unknown): value is Date {\n return value instanceof Date;\n}\n\n/**\n * Coerces a data-bound value (typically a date, week, month or year formatted as a string) to a date object.\n */\nexport function coerceDateProperty(value: Date | InputType): Date;\nexport function coerceDateProperty(value: unknown): null;\nexport function coerceDateProperty(value: unknown): Date | null {\n if (isDate(value)) return value;\n if (isInputType(value)) return dateFromInput(value);\n return null;\n}\n","/**\n * Computes the nth percentile of the given data (array elements) along the specified axis.\n */\nexport function getPercentile(numbers: Array, percentile: number): number {\n if (percentile < 0 || percentile > 100) {\n throw new RangeError(\"Percentile value must be between 0 and 100\");\n }\n numbers.sort((pre, cur) => pre - cur); // sort the array in ascending order\n const index = (percentile / 100) * (numbers.length - 1); // calculate the index of the percentile\n const lowerIndex = Math.floor(index); // calculate the lower index\n const upperIndex = Math.ceil(index); // calculate the upper index\n if (lowerIndex === upperIndex) {\n // if the index is an integer, return the corresponding value\n return numbers[lowerIndex];\n }\n const lowerValue = numbers[lowerIndex]; // get the value at the lower index\n const upperValue = numbers[upperIndex]; // get the value at the upper index\n return lowerValue + (index - lowerIndex) * (upperValue - lowerValue); // interpolate between the two values\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { allPass, last, gte, lte, __ } from \"ramda\";\n\n/**\n * Splits an array of numbers into a list of objects that declares the index start and end position for elements that match a range qualifier object.\n */\nexport function getRangeIndexes(\n numbers: Array,\n rangeQualifier: {\n gte?: number;\n lte?: number;\n }\n) {\n return numbers.reduce>(\n (rangeIndexes, _currentValue, currentIndex) => {\n const lastRangeIndexes = last(rangeIndexes);\n const rangeQualifierFunction = allPass([\n gte(__, rangeQualifier.gte ?? Number.NEGATIVE_INFINITY),\n lte(__, rangeQualifier.lte ?? Number.POSITIVE_INFINITY),\n ]);\n if (rangeQualifierFunction(_currentValue))\n if (rangeQualifierFunction(lastRangeIndexes?._currentValue as number)) lastRangeIndexes!.end = currentIndex + 1;\n else {\n rangeIndexes.push({\n start: currentIndex,\n end: currentIndex,\n _currentValue,\n });\n }\n else delete lastRangeIndexes?._currentValue;\n return rangeIndexes;\n },\n []\n );\n}\n","/**\n * Type describing the allowed values for a number input\n */\nexport type NumberInput = string | number | null | undefined;\n\n/**\n * Coerces a data-bound value (typically a string) to a number.\n */\nexport function coerceNumberProperty(value: unknown): number {\n if (!isNaN(parseFloat(value as string)) && !isNaN(Number(value))) return Number(value);\n else return NaN;\n}\n","/**\n * Convert a kebab-cased string to camelCased.\n */\nexport function kebabToCamelCase(input: string): string {\n return input.replace(/-([a-z\\d])/g, (_, char) => char.toUpperCase());\n}\n\n/**\n * Convert a kebab-cased string to snake_cased.\n */\nexport function kebabToSnakeCase(input: string): string {\n return input.replace(/-([a-z\\d])/g, (_, char) => `_${char.toLowerCase()}`);\n}\n\n/**\n * Convert a camelCased string to kebab-cased.\n */\nexport function camelToDashCase(input: string): string {\n return input.replace(/[A-Z]/g, (char) => `-${char.toLowerCase()}`);\n}\n","/** Converts number to CSS px unit, e.g. `1` will become `1px`. */\nexport function toPx(unit: number | string) {\n return `${unit}px`;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nconst DEFAULT_DEBOUNCE_DURATION = 250;\n\n/**\n * Delays a method its execution a certain amount of milliseconds after the first call was invoked.\n *\n * This decorator is typically used if a method is called a lot of times and you want to avoid performance problems, for example when attaching event listeners to scroll or window resize events.\n *\n * @param delay Debounce time expressed in milliseconds.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function Debounce(delay = DEFAULT_DEBOUNCE_DURATION): MethodDecorator {\n return function (_: unknown, propertyKey: PropertyKey, descriptor: PropertyDescriptor) {\n // Attaching the value on a private property of this ensures that\n // it can be set on the class instance as oppose to the prototype\n // Casting as string due to an issue in TypeScript: https://github.com/microsoft/TypeScript/issues/1863\n const symbol = Symbol(\"__Debounce__\" + String(propertyKey)) as unknown as keyof { value: unknown };\n const original = descriptor.value;\n descriptor.value = function (...args: any[]) {\n clearTimeout(this[symbol]);\n this[symbol] = setTimeout(() => original.apply(this, args), delay);\n };\n return descriptor;\n };\n}\n","/** Whether the browser user-agent is a mobile device. */\nexport const isMobile = /Mobi|Tablet|iPad|iPhone|Android/.test(navigator.userAgent);\n\n/** Whether the browser user-agent is a desktop. */\nexport const isDesktop = !isMobile;\n","/** Creates an array of elements split into groups the length of size. If array can't be split evenly, the final chunk will be the remaining elements. */\nexport function chunk(array: Array, size: number): Array> {\n return array.length ? [array.slice(0, size), ...chunk(array.slice(size), size)] : [];\n}\n","export class DateRange {\n constructor(readonly start: Date, readonly end = new Date()) {}\n}\n","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of days in a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many days are in February 2000?\n * const result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\nexport default function getDaysInMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var monthIndex = date.getMonth();\n var lastDayOfMonth = new Date(0);\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n lastDayOfMonth.setHours(0, 0, 0, 0);\n return lastDayOfMonth.getDate();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\nexport default function differenceInCalendarYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() - dateRight.getFullYear();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * const result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\nexport default function compareAsc(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var diff = dateLeft.getTime() - dateRight.getTime();\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1;\n // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isWeekend\n * @category Weekday Helpers\n * @summary Does the given date fall on a weekend?\n *\n * @description\n * Does the given date fall on a weekend?\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date falls on a weekend\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Does 5 October 2014 fall on a weekend?\n * const result = isWeekend(new Date(2014, 9, 5))\n * //=> true\n */\nexport default function isWeekend(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var day = date.getDay();\n return day === 0 || day === 6;\n}","import { differenceInYears, getDaysInMonth, getYear, isWeekend } from \"date-fns\";\nimport {\n __,\n addIndex,\n both,\n equals,\n gt,\n gte,\n includes,\n isEmpty,\n last,\n lte,\n map,\n modulo,\n multiply,\n pipe,\n replace,\n split,\n splitAt,\n splitEvery,\n subtract,\n sum,\n take,\n takeLast,\n toLower,\n when,\n zipWith,\n} from \"ramda\";\n\nimport { isFinnishPublicHoliday, isSwedishPublicHoliday } from \"./date\";\n\n/**\n * Regular expression that matches valid swedish emails.\n *\n * this regex matches swedish emails as implemented by the Orderhandler API, where\n * - `john.doe` is a unlimited number of lowercase letters and numericals, with a underscore, dash or dot as accepted special characters\n * - `@` seperator for between the first and second sections\n * - `corp.example` is the host and subdomain represented as a unlimited number of lowercase letters and numericals, with a dash as accepted special character\n * - `.com` the domain extention with a minimum of 2 and maximum of 4 lowercase letters\n */\nconst SWEDISH_EMAIL = /^[a-z0-9_-]+(\\.[a-z0-9_-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-z]{2,4})$/;\n\n/**\n * Regular expression that matches valid finnish emails.\n *\n * this regex matches finnish emails as implemented by backend services, where\n * - `jöhn.doe` is a unlimited number of lowercase letters (including å, ä and ö) and numericals, with a underscore, dash or dot as accepted special characters\n * - `@` seperator for between the first and second sections\n * - `corp.example` is the host and subdomain represented as a unlimited number of lowercase letters (including å, ä and ö) and numericals, with a dash as accepted special character\n * - `.com` the domain extention with a unlimited letters (including å, ä and ö) and numericals\n */\nconst FINNISH_EMAIL =\n /^[a-ö][a-ö|0-9|]*([a-ö|0-9|._-]+)*([.][a-ö|0-9]+([_][a-ö|0-9]+)*)*@[a-ö][a-ö|0-9|]*.([a-ö][a-ö|0-9]*(.[a-ö][a-ö|0-9]*)?)$/;\n/**\n * Regular expression that matches valid finnish business id.\n *\n * this regex matches finnish business id of format `2108804-8`, where\n * - `2108804` is a 7 digit business number generated by national board of taxation following 11 mod 2 algorithm.\n * - `-` seperator for number and checksum digit\n * - `8` is checksum digit\n */\nconst FINNISH_ORGANIZATION_NUMBER_REGEXP = /^(?!0000000-0).*(\\d{7}-\\d{1}?)$/;\n\n/**\n * Regular expression that matches valid swedish organisation number.\n *\n * this regex matches swedish organisation of format `556036-2138`, where\n * - `556036213` first 9 digit except dash (`-`) follows luhn algorithm to generated checsum digit 8.\n * - `-` seperator for between 6 & 4 digit\n * - `8` is checksum digit\n */\nconst SWEDISH_ORGANIZATION_NUMBER_REGEXP = /^(?!000000-0000)(\\d{6}-\\d{4}?)$/;\n\n/**\n * Regular expression that matches valid Finnish personal numbers.\n *\n * This regex matches Finnish personal numbers of formats like `051163-050Y`, `211200A598H`, or `010594Y9032`, where:\n * - `051163` or `211200` or `010594`: The first 6 digits represent a valid date in the format `ddMMyy`.\n * - `-`, `+`, `A`, `B`, `C`, `D`, `E`, `F`, `Y`, `X`, `W`, `V`, `U`: These represent the century of birth and are called intermediate characters.\n * - For those born in or after 2000, it can be `A`, `B`, `C`, `D`, `E`, or `F`.\n * - For those born in the 20th century, it can be `-`, `Y`, `X`, `W`, `V`, or `U`.\n * - For those born in the 19th century, it remains `+`.\n * - `050` or `598` or `903`: The next 3 digits are an identification number, which is odd for males and even for females.\n * - `Y`, `H`, `2`: The last character is a control character.\n */\nconst FINNISH_PERSONAL_NUMBER_REGEXP =\n /^([0][1-9]|[1|2][0-9]|[3][0|1])([0][1-9]|[1][0-2])([0-9]{2})([-+A-FYXWVU])([0-9]{3})([A-Z0-9])$/;\n\n/**\n * Regular expression that matches valid swedish personal number.\n *\n * this regex matches swedish personal of format `19640823-3234`, where\n * - `19640823` or `640823` first 8 or 6 digit represent valid date of format `yyyyMMdd`\n * - `-` seperator between 8/6 and 4 digit\n * - `640823323` this combined digit except dash (`-`) follows luhn algorithm to generated checsum digit 4\n * - `4` is checksum character\n */\nconst SWEDISH_PERSONAL_NUMBER_REGEXP = /^(19|20)?([0-9]{2})([0][1-9]|[1][0-2])([0-9]{2})([-+|\\s]?\\d{4})$/;\n\n/**\n * Regular expression that matches valid finnish phone number.\n *\n * this regex matches finnish phone numer of some format like `+358406361091`, where\n * - `+358` represent country code\n * - `406361091` represent remain part of phone number\n */\nconst FINNISH_PHONE_NUMBER_REGEXP = /^(((\\+|0{2})(([1-9]{3})|[1-9]{2}[ ][1-9]))|(0)[1-9]{1})([0-9 -]{6,10})$/;\n\n/**\n * Regular expression that matches valid swedish phone number.\n *\n * this regex matches finnish phone numer of some format like `+4620-820000`, where\n * - `+46` represent country code\n * - `20-820000` represent remain part of phone number\n */\nconst SWEDISH_PHONE_NUMBER_REGEXP = /^(00[1-9][1-9]|\\+|0)[1-9][0-9]{0,2}[0-9\\-/]{5,8}$/;\n\n/**\n * Regular expression that matches valid swedish pod id.\n *\n * this regex matches swedish phone podid of format like `735999100054384456`, where\n * - `735999100054384456` represent unique podid for apartment/house which follows GS-1 standard algorithm to validate\n */\nconst SWEDISH_PREMISE_ID_REGEXP = /^[0-9]{18}$/;\n\n/**\n * Regular expression that matches valid finnish postal code.\n *\n * this regex matches finnish postal code of format like `62100`, where\n * - `62100` represent finnish valid postal code\n */\nconst FINNISH_POSTAL_CODE_REGEXP = /^\\d{5}$/;\n\n/**\n * Regular expression that matches valid swedish postal code.\n *\n * this regex matches swedish postal code of format like `169 56`, where\n * - `169 56` or `16956` represent swedish valid postal code\n */\nconst SWEDISH_POSTAL_CODE_REGEXP = /^[1-9]{1}[0-9]{2}\\s?\\d{2}$/;\n\n/**\n * Regular expression that matches valid international postal code.\n *\n * this regex matches swedish postal code of format like `FE16956`, where\n * - `169 56` or `16956` or `FE16956` represent international valid postal code\n */\nconst INTERNATIONAL_POSTAL_CODE_REGEXP = /^(?=.*\\d)[a-zA-Z1-9][a-zA-Z0-9 -]{1,9}$/;\n\n/**\n * Regular expression that matches valid password according to Business Rule 16.\n * This expression is modified to handle whitespace and omits the final \".\" to match any character.\n *\n * The password must contain\n * - between 8 and 16 characters\n * - one uppercase letter,\n * - one lowercase letter,\n * - one digit and\n * - one special character.\n * - example 'Abcdefghi1$'\n * - no spaces\n */\nconst PASSWORD_BR_16 = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[^\\da-zA-Z])[a-zA-Z0-9!@#$%^&*]{8,16}$/;\n\n/**\n * Regular expression that matches valid characters for street names.\n *\n * The street name must contain\n * - a limit of 100 characters\n * - between a-z and A-Z characters\n * - can also include special characters like Å, Ä, Ö, Æ, Ø, Ü, ß as added below,\n */\nconst STREET_NAME_INVOICE_REGEXP = /^([a-zA-Z0-9åäöÅÄÖÆæØøÜüß \\-.]){1,100}$/;\n\n/**\n * Regular expression that matches valid characters for care of address.\n *\n * The care of address must contain\n * - a limit of 150 characters\n * - between a-z and A-Z characters\n * - can also include special characters like Å, Ä, Ö, Æ, Ø, Ü, ß as added below,\n */\nconst CARE_OF_ADDRESS_REGEX = /^([a-zA-Z0-9åäöÅÄÖÆæØøÜüß \\-()]){0,150}$/;\n\n/**\n * Regular expression that matches valid characters Swedish, Finnish, and international postal towns.\n *\n * The postal town must contain\n * - a limit of 60 characters\n * - between a-z and A-Z characters\n * - can also include special characters like Å, Ä, Ö, Æ, Ø, Ü, ß as added below,\n */\nconst SWEDISH_FINNISH_POSTAL_TOWN_REGEXP = /^([a-zA-ZåäöÅÄÖÆæØøÜüß \\-_]){1,60}$/;\n\n/**\n * Validates a domain extention against a list of official domain registries (filtered by length 2 to 4 characters).\n * @see [IANA Domain Registry](http://data.iana.org/TLD/tlds-alpha-by-domain.txt)\n * @param emailAddress The email address to validate\n */\nconst hasValidDomainExtension = (emailAddress: string) => {\n // list of official domain extentions from the IANA domain registry\n // filtered by 2 to 4 characters\n // @ts-ignore Keep as list\n const IANA_DOMAIN_REGISTRY = [\n \"aaa\",\n \"aarp\",\n \"abb\",\n \"abc\",\n \"able\",\n \"ac\",\n \"aco\",\n \"ad\",\n \"adac\",\n \"ads\",\n \"ae\",\n \"aeg\",\n \"aero\",\n \"af\",\n \"afl\",\n \"ag\",\n \"ai\",\n \"aig\",\n \"akdn\",\n \"al\",\n \"ally\",\n \"am\",\n \"amex\",\n \"anz\",\n \"ao\",\n \"aol\",\n \"app\",\n \"aq\",\n \"ar\",\n \"arab\",\n \"army\",\n \"arpa\",\n \"art\",\n \"arte\",\n \"as\",\n \"asda\",\n \"asia\",\n \"at\",\n \"au\",\n \"audi\",\n \"auto\",\n \"aw\",\n \"aws\",\n \"ax\",\n \"axa\",\n \"az\",\n \"ba\",\n \"baby\",\n \"band\",\n \"bank\",\n \"bar\",\n \"bb\",\n \"bbc\",\n \"bbt\",\n \"bbva\",\n \"bcg\",\n \"bcn\",\n \"bd\",\n \"be\",\n \"beer\",\n \"best\",\n \"bet\",\n \"bf\",\n \"bg\",\n \"bh\",\n \"bi\",\n \"bid\",\n \"bike\",\n \"bing\",\n \"bio\",\n \"biz\",\n \"bj\",\n \"blog\",\n \"blue\",\n \"bm\",\n \"bms\",\n \"bmw\",\n \"bn\",\n \"bo\",\n \"bofa\",\n \"bom\",\n \"bond\",\n \"boo\",\n \"book\",\n \"bot\",\n \"box\",\n \"br\",\n \"bs\",\n \"bt\",\n \"buy\",\n \"buzz\",\n \"bv\",\n \"bw\",\n \"by\",\n \"bz\",\n \"bzh\",\n \"ca\",\n \"cab\",\n \"cafe\",\n \"cal\",\n \"call\",\n \"cam\",\n \"camp\",\n \"car\",\n \"care\",\n \"cars\",\n \"casa\",\n \"case\",\n \"cash\",\n \"cat\",\n \"cba\",\n \"cbn\",\n \"cbre\",\n \"cbs\",\n \"cc\",\n \"cd\",\n \"ceo\",\n \"cern\",\n \"cf\",\n \"cfa\",\n \"cfd\",\n \"cg\",\n \"ch\",\n \"chat\",\n \"ci\",\n \"citi\",\n \"city\",\n \"ck\",\n \"cl\",\n \"club\",\n \"cm\",\n \"cn\",\n \"co\",\n \"com\",\n \"cool\",\n \"coop\",\n \"cpa\",\n \"cr\",\n \"crs\",\n \"csc\",\n \"cu\",\n \"cv\",\n \"cw\",\n \"cx\",\n \"cy\",\n \"cyou\",\n \"cz\",\n \"dad\",\n \"data\",\n \"date\",\n \"day\",\n \"dclk\",\n \"dds\",\n \"de\",\n \"deal\",\n \"dell\",\n \"desi\",\n \"dev\",\n \"dhl\",\n \"diet\",\n \"dish\",\n \"diy\",\n \"dj\",\n \"dk\",\n \"dm\",\n \"dnp\",\n \"do\",\n \"docs\",\n \"dog\",\n \"dot\",\n \"dtv\",\n \"duck\",\n \"dvag\",\n \"dvr\",\n \"dz\",\n \"eat\",\n \"ec\",\n \"eco\",\n \"edu\",\n \"ee\",\n \"eg\",\n \"er\",\n \"erni\",\n \"es\",\n \"esq\",\n \"et\",\n \"eu\",\n \"eus\",\n \"fage\",\n \"fail\",\n \"fan\",\n \"fans\",\n \"farm\",\n \"fast\",\n \"fi\",\n \"fiat\",\n \"fido\",\n \"film\",\n \"fire\",\n \"fish\",\n \"fit\",\n \"fj\",\n \"fk\",\n \"flir\",\n \"fly\",\n \"fm\",\n \"fo\",\n \"foo\",\n \"food\",\n \"ford\",\n \"fox\",\n \"fr\",\n \"free\",\n \"frl\",\n \"ftr\",\n \"fun\",\n \"fund\",\n \"fyi\",\n \"ga\",\n \"gal\",\n \"game\",\n \"gap\",\n \"gay\",\n \"gb\",\n \"gbiz\",\n \"gd\",\n \"gdn\",\n \"ge\",\n \"gea\",\n \"gent\",\n \"gf\",\n \"gg\",\n \"ggee\",\n \"gh\",\n \"gi\",\n \"gift\",\n \"gl\",\n \"gle\",\n \"gm\",\n \"gmbh\",\n \"gmo\",\n \"gmx\",\n \"gn\",\n \"gold\",\n \"golf\",\n \"goo\",\n \"goog\",\n \"gop\",\n \"got\",\n \"gov\",\n \"gp\",\n \"gq\",\n \"gr\",\n \"gs\",\n \"gt\",\n \"gu\",\n \"guge\",\n \"guru\",\n \"gw\",\n \"gy\",\n \"hair\",\n \"haus\",\n \"hbo\",\n \"hdfc\",\n \"help\",\n \"here\",\n \"hgtv\",\n \"hiv\",\n \"hk\",\n \"hkt\",\n \"hm\",\n \"hn\",\n \"host\",\n \"hot\",\n \"how\",\n \"hr\",\n \"hsbc\",\n \"ht\",\n \"hu\",\n \"ibm\",\n \"icbc\",\n \"ice\",\n \"icu\",\n \"id\",\n \"ie\",\n \"ieee\",\n \"ifm\",\n \"il\",\n \"im\",\n \"imdb\",\n \"immo\",\n \"in\",\n \"inc\",\n \"info\",\n \"ing\",\n \"ink\",\n \"int\",\n \"io\",\n \"iq\",\n \"ir\",\n \"is\",\n \"ist\",\n \"it\",\n \"itau\",\n \"itv\",\n \"java\",\n \"jcb\",\n \"je\",\n \"jeep\",\n \"jio\",\n \"jll\",\n \"jm\",\n \"jmp\",\n \"jnj\",\n \"jo\",\n \"jobs\",\n \"jot\",\n \"joy\",\n \"jp\",\n \"jprs\",\n \"kddi\",\n \"ke\",\n \"kfh\",\n \"kg\",\n \"kh\",\n \"ki\",\n \"kia\",\n \"kim\",\n \"kiwi\",\n \"km\",\n \"kn\",\n \"kp\",\n \"kpmg\",\n \"kpn\",\n \"kr\",\n \"krd\",\n \"kred\",\n \"kw\",\n \"ky\",\n \"kz\",\n \"la\",\n \"land\",\n \"lat\",\n \"law\",\n \"lb\",\n \"lc\",\n \"lds\",\n \"lego\",\n \"lgbt\",\n \"li\",\n \"lidl\",\n \"life\",\n \"like\",\n \"limo\",\n \"link\",\n \"live\",\n \"lk\",\n \"llc\",\n \"llp\",\n \"loan\",\n \"loft\",\n \"lol\",\n \"love\",\n \"lpl\",\n \"lr\",\n \"ls\",\n \"lt\",\n \"ltd\",\n \"ltda\",\n \"lu\",\n \"luxe\",\n \"lv\",\n \"ly\",\n \"ma\",\n \"maif\",\n \"man\",\n \"map\",\n \"mba\",\n \"mc\",\n \"md\",\n \"me\",\n \"med\",\n \"meet\",\n \"meme\",\n \"men\",\n \"menu\",\n \"mg\",\n \"mh\",\n \"mil\",\n \"mini\",\n \"mint\",\n \"mit\",\n \"mk\",\n \"ml\",\n \"mlb\",\n \"mls\",\n \"mm\",\n \"mma\",\n \"mn\",\n \"mo\",\n \"mobi\",\n \"moda\",\n \"moe\",\n \"moi\",\n \"mom\",\n \"moto\",\n \"mov\",\n \"mp\",\n \"mq\",\n \"mr\",\n \"ms\",\n \"msd\",\n \"mt\",\n \"mtn\",\n \"mtr\",\n \"mu\",\n \"mv\",\n \"mw\",\n \"mx\",\n \"my\",\n \"mz\",\n \"na\",\n \"nab\",\n \"name\",\n \"navy\",\n \"nba\",\n \"nc\",\n \"ne\",\n \"nec\",\n \"net\",\n \"new\",\n \"news\",\n \"next\",\n \"nf\",\n \"nfl\",\n \"ng\",\n \"ngo\",\n \"nhk\",\n \"ni\",\n \"nico\",\n \"nike\",\n \"nl\",\n \"no\",\n \"now\",\n \"np\",\n \"nr\",\n \"nra\",\n \"nrw\",\n \"ntt\",\n \"nu\",\n \"nyc\",\n \"nz\",\n \"obi\",\n \"off\",\n \"ollo\",\n \"om\",\n \"one\",\n \"ong\",\n \"onl\",\n \"ooo\",\n \"open\",\n \"org\",\n \"ott\",\n \"ovh\",\n \"pa\",\n \"page\",\n \"pars\",\n \"pay\",\n \"pccw\",\n \"pe\",\n \"pet\",\n \"pf\",\n \"pg\",\n \"ph\",\n \"phd\",\n \"pics\",\n \"pid\",\n \"pin\",\n \"ping\",\n \"pink\",\n \"pk\",\n \"pl\",\n \"play\",\n \"plus\",\n \"pm\",\n \"pn\",\n \"pnc\",\n \"pohl\",\n \"porn\",\n \"post\",\n \"pr\",\n \"pro\",\n \"prod\",\n \"prof\",\n \"pru\",\n \"ps\",\n \"pt\",\n \"pub\",\n \"pw\",\n \"pwc\",\n \"py\",\n \"qa\",\n \"qpon\",\n \"qvc\",\n \"raid\",\n \"re\",\n \"read\",\n \"red\",\n \"reit\",\n \"ren\",\n \"rent\",\n \"rest\",\n \"rich\",\n \"ril\",\n \"rio\",\n \"rip\",\n \"rmit\",\n \"ro\",\n \"room\",\n \"rs\",\n \"rsvp\",\n \"ru\",\n \"ruhr\",\n \"run\",\n \"rw\",\n \"rwe\",\n \"sa\",\n \"safe\",\n \"sale\",\n \"sap\",\n \"sarl\",\n \"sas\",\n \"save\",\n \"saxo\",\n \"sb\",\n \"sbi\",\n \"sbs\",\n \"sc\",\n \"sca\",\n \"scb\",\n \"scot\",\n \"sd\",\n \"se\",\n \"seat\",\n \"seek\",\n \"ses\",\n \"sew\",\n \"sex\",\n \"sexy\",\n \"sfr\",\n \"sg\",\n \"sh\",\n \"shaw\",\n \"shia\",\n \"shop\",\n \"show\",\n \"si\",\n \"silk\",\n \"sina\",\n \"site\",\n \"sj\",\n \"sk\",\n \"ski\",\n \"skin\",\n \"sky\",\n \"sl\",\n \"sm\",\n \"sn\",\n \"sncf\",\n \"so\",\n \"sohu\",\n \"song\",\n \"sony\",\n \"soy\",\n \"spa\",\n \"spot\",\n \"sr\",\n \"srl\",\n \"ss\",\n \"st\",\n \"star\",\n \"stc\",\n \"su\",\n \"surf\",\n \"sv\",\n \"sx\",\n \"sy\",\n \"sz\",\n \"tab\",\n \"talk\",\n \"tax\",\n \"taxi\",\n \"tc\",\n \"tci\",\n \"td\",\n \"tdk\",\n \"team\",\n \"tech\",\n \"tel\",\n \"teva\",\n \"tf\",\n \"tg\",\n \"th\",\n \"thd\",\n \"tiaa\",\n \"tips\",\n \"tj\",\n \"tjx\",\n \"tk\",\n \"tl\",\n \"tm\",\n \"tn\",\n \"to\",\n \"top\",\n \"town\",\n \"toys\",\n \"tr\",\n \"trv\",\n \"tt\",\n \"tube\",\n \"tui\",\n \"tv\",\n \"tvs\",\n \"tw\",\n \"tz\",\n \"ua\",\n \"ubs\",\n \"ug\",\n \"uk\",\n \"uno\",\n \"uol\",\n \"ups\",\n \"us\",\n \"uy\",\n \"uz\",\n \"va\",\n \"vana\",\n \"vc\",\n \"ve\",\n \"vet\",\n \"vg\",\n \"vi\",\n \"vig\",\n \"vin\",\n \"vip\",\n \"visa\",\n \"viva\",\n \"vivo\",\n \"vn\",\n \"vote\",\n \"voto\",\n \"vu\",\n \"wang\",\n \"wed\",\n \"weir\",\n \"wf\",\n \"wien\",\n \"wiki\",\n \"win\",\n \"wine\",\n \"wme\",\n \"work\",\n \"wow\",\n \"ws\",\n \"wtc\",\n \"wtf\",\n \"xbox\",\n \"xin\",\n \"xxx\",\n \"xyz\",\n \"ye\",\n \"yoga\",\n \"you\",\n \"yt\",\n \"yun\",\n \"za\",\n \"zara\",\n \"zero\",\n \"zip\",\n \"zm\",\n \"zone\",\n \"zw\",\n ];\n\n return pipe(\n toLower, // parse as lowercase\n split(\".\"), // split by dots\n last, // take the top domain from the end of the list\n includes(__, IANA_DOMAIN_REGISTRY) // check if its in the list of official domain extentions list\n )(emailAddress);\n};\n\n/**\n * Validates a Swedish Personal Number or Business Registration Number control character (according to the Luhn algorithm).\n * @see [Luhn algorithm](https://en.m.wikipedia.org/wiki/Luhn_algorithm)\n * @see [Swedish Personal Number](https://en.wikipedia.org/wiki/Personal_identity_number_(Sweden))\n * @param identificationNumber the identification number to validate\n */\nconst hasValidSwedishChecksum = (identificationNumber: string) => {\n const doubleEvenNumbers = addIndex(map)((digit, index) => (index % 2 === 0 ? digit * 2 : digit));\n const sumDoubleDigitNumbers = map((digit) => (digit > 9 ? digit - 9 : digit));\n const isDivisibleBy10 = (digit: number) => digit % 10 === 0;\n\n return pipe(\n //@ts-ignore Ignoring due to poor ramda typings\n replace(/\\D/g, \"\"), // Remove non numericals\n takeLast(10), // check when value is positive number, take last 10 characters\n split(\"\"), // Split into array\n map(Number), // Parse characters as numericals\n doubleEvenNumbers, // Double every second digit\n sumDoubleDigitNumbers, // Add double digits together to get single digit numbers only\n sum, // Sum of all digits\n isDivisibleBy10 // Checks that the sum is divisible by 10\n )(identificationNumber);\n};\n\n/**\n * Returns birthdate from a Swedish or Finnish personal number as a Date object\n */\nconst generateDateFromDatePart = (datePart: number[], region: string, controlCharacter: string) => {\n switch (region) {\n case \"se\": {\n const [year, month, day] = datePart;\n //assuming day is valid day\n let validDay = day;\n //check control character '+', if person is greater than 100 year, else fecth current year\n const baseYear = controlCharacter === \"+\" ? getYear(new Date()) - 100 : getYear(new Date());\n //calculation to get person's born year\n const fullYear = baseYear - ((baseYear - year) % 100);\n //check if days are valid in personal number\n let isValidDays = day > 0 && day <= getDaysInMonth(new Date(fullYear, month - 1));\n //check if its co-ordination number, if days are not valid in previous step\n if (!isValidDays) {\n isValidDays = day > 60 && day <= getDaysInMonth(new Date(fullYear, month - 1)) + 60;\n //if its coordination number subtract 60 in it.\n validDay = isValidDays ? day - 60 : day;\n }\n //return date\n return new Date(fullYear, month - 1, validDay);\n }\n // Create Date object from Finnish personal number\n case \"fi\": {\n const [day, month, year] = datePart;\n //control character to indicate century mapping eg. \"A\" equals 2000, \"+\" equals 1800, \"-\" equals 1900\n const baseYear = controlCharacter === \"A\" ? 2000 : controlCharacter === \"+\" ? 1800 : 1900;\n //add to form person's born year\n const fullYear = baseYear + year;\n //return date\n return new Date(fullYear, month - 1, day);\n }\n default:\n throw Error(\n `[ Vattenfall Elements ] The provided region '${region}' is not supported by the validator 'minAge' and 'maxAge'.`\n );\n }\n};\n\n/**\n * Validates the personal number has valid date and age is within min and max range.\n * @param personalNumber the personal number to validate\n * @param region indicator to calculate age in yyMMdd or ddMMyy format\n * @param minAge the person's minimum age limit\n * @param maxAge the person's maximum age limit\n */\nconst hasValidAgeRange = (personalNumber: string, region: string, minAge = 0, maxAge = 999) => {\n const getBirthDate = (datePart: number[]) => generateDateFromDatePart(datePart, region, personalNumber.charAt(6));\n const getAge = (birthDate: Date) => differenceInYears(new Date(), birthDate);\n const isValidAge = both(lte(__, maxAge), gte(__, minAge));\n\n return pipe(\n //@ts-ignore Ignoring due to poor ramda typings\n replace(/\\D/g, \"\"), // Remove non numericals\n //@ts-ignore Ignoring due to poor ramda typings\n takeLast(10), // Take last 10 characters\n take(6), // Take first 6 characters\n splitEvery(2), // Split it in array of 2 characters\n map(Number), // Parse characters as numericals\n getBirthDate, // get birth date from personal number\n getAge, // calculate age differences\n isValidAge // Check if age is within limit\n //@ts-ignore Ignoring due to poor ramda typings\n )(personalNumber);\n};\n\n/**\n * Validates the control character of a Finnish Personal Identity Code.\n * @see [Finnish Personal Identity Code](https://en.wikipedia.org/wiki/National_identification_number#Finland)\n * @param identificationNumber the identification number to validate\n */\nconst hasValidFinnishPersonalChecksum = (identificationNumber: string) => {\n const [calculationBase, controlCharacter] = splitAt(-1, identificationNumber);\n const hasMatchingControlCharacter = (checkSum: number) =>\n equals(\"0123456789ABCDEFHJKLMNPRSTUVWXY\".charAt(checkSum), controlCharacter);\n\n return pipe(\n replace(/[-+A-FYXWVU]/g, \"\"), // Remove intermediate characters and other non-numericals\n Number, // Parse as number\n modulo(__, 31), // Divides the calculation base with 31 to get the checksum\n hasMatchingControlCharacter // Checks that control character from check sum match control character from identification number\n )(calculationBase);\n};\n\n/**\n * Validates the control character of a Finnish personal number.\n * @see [Finnish Business Identity Code](http://tarkistusmerkit.teppovuori.fi/tarkmerk.htm#y-tunnus2)\n * @param identificationNumber the identification number to validate\n */\nconst hasValidFinnishBusinessChecksum = (identificationNumber: string) => {\n const [calculationBase, controlCharacter] = splitAt(-1, identificationNumber);\n\n return pipe(\n replace(/\\D/gi, \"\"), // Remove non numericals\n split(\"\"), // Split into array\n map(Number), // Parse characters as numericals\n zipWith(multiply, [7, 9, 10, 5, 8, 4, 2]), // Multiply each digit with a set of coefficients defined by Finnish tax authorities\n sum, // Sum of all digits to get the check sum\n modulo(__, 11), // Divide check sum by 11\n when(gt(__, 1), subtract(11)), // If the checksum is greater than 1 subtract 11\n String, // Parse it back to a string to match the type of the control character\n equals(controlCharacter) // Checks that control character from check sum match control character from identification number\n )(calculationBase);\n};\n\n/**\n * Validates the control character of a Swedish premise number.\n * @param identificationNumber the identification number to validate\n */\nconst hasValidSwedishPremiseChecksum = (identificationNumber: string) => {\n const tripleEvenNumbers = addIndex(map)((digit, index) => (index % 2 ? digit : digit * 3));\n\n return pipe(\n split(\"\"), // Split into array\n map(Number), // Parse characters as numericals\n tripleEvenNumbers, // Triple ever even number\n sum, // Sum all numbers\n subtract(1000), // Subtract sum from 1000\n modulo(__, 10), // Divide by 10\n equals(0) // Check that the checksum equals 0\n )(identificationNumber);\n};\n\n/**\n * Checks that the provided Swedish email address is correctly formatted and has an official domain extension.\n * @param swedishEmailAddress the email address to validate\n */\nexport const isValidSwedishEmailAddress = (swedishEmailAddress: string) =>\n !isEmpty(swedishEmailAddress) &&\n SWEDISH_EMAIL.test(swedishEmailAddress.toLowerCase()) &&\n hasValidDomainExtension(swedishEmailAddress);\n\n/**\n * Checks that the provided Finnish email address is correctly formatted and has an official domain extension.\n * @param finnishEmailAddress the email address to validate\n */\nexport const isValidFinnishEmailAddress = (finnishEmailAddress: string) =>\n !isEmpty(finnishEmailAddress) &&\n FINNISH_EMAIL.test(finnishEmailAddress.toLowerCase()) &&\n hasValidDomainExtension(finnishEmailAddress);\n\n/**\n * Checks that the provided Swedish personal number is correctly formatted and match the calculated checksum figure.\n * @param swedishPersonalNumber the personal number to validate\n */\nexport const isValidSwedishPersonalNumber = (swedishPersonalNumber: string) =>\n !isEmpty(swedishPersonalNumber) &&\n SWEDISH_PERSONAL_NUMBER_REGEXP.test(swedishPersonalNumber) &&\n hasValidSwedishChecksum(swedishPersonalNumber);\n\n/**\n * Checks that the provided Swedish business number is correctly formatted and match the calculated checksum figure.\n * @param swedishBusinessNumber the business number to validate\n */\nexport const isValidSwedishBusinessNumber = (swedishBusinessNumber: string) =>\n !isEmpty(swedishBusinessNumber) &&\n SWEDISH_ORGANIZATION_NUMBER_REGEXP.test(swedishBusinessNumber) &&\n hasValidSwedishChecksum(swedishBusinessNumber);\n\n/**\n * Checks that the provided Finnish personal number is correctly formatted and match the calculated checksum figure.\n * @param finnishPersonalNumber the personal number to validate\n */\nexport const isValidFinnishPersonalNumber = (finnishPersonalNumber: string) =>\n !isEmpty(finnishPersonalNumber) &&\n FINNISH_PERSONAL_NUMBER_REGEXP.test(finnishPersonalNumber) &&\n hasValidFinnishPersonalChecksum(finnishPersonalNumber);\n\n/**\n * Checks that the provided Swedish or Finnish personal number has valid legal age.\n * @param personalNumber the personal number to validate\n * @param region region to validate against different rules\n * @param minAge minimum legal age for personal number to validate against\n * @param maxAge maximum legal age for personal number to validate against\n */\nexport const isValidAgeRange = (personalNumber: string, region: string, minAge?: number, maxAge?: number) =>\n !isEmpty(personalNumber) && hasValidAgeRange(personalNumber, region, minAge, maxAge);\n\n/**\n * Checks that the provided Swedish Business Number is correctly formatted and match the calculated checksum figure.\n * @param finnishBusinessNumber the business number to validate\n */\nexport const isValidFinnishBusinessNumber = (finnishBusinessNumber: string) =>\n !isEmpty(finnishBusinessNumber) &&\n FINNISH_ORGANIZATION_NUMBER_REGEXP.test(finnishBusinessNumber) &&\n hasValidFinnishBusinessChecksum(finnishBusinessNumber);\n\n/**\n * Checks that the provided Swedish phone number is correctly formatted.\n * @param swedishPhoneNumber the phone number to validate\n */\nexport const isValidSwedishPhoneNumber = (swedishPhoneNumber: string) =>\n !isEmpty(swedishPhoneNumber) && SWEDISH_PHONE_NUMBER_REGEXP.test(swedishPhoneNumber);\n\n/**\n * Checks that the provided Finnish phone number is correctly formatted.\n * @param finnishPhoneNumber the phone number to validate\n */\nexport const isValidFinnishPhoneNumber = (finnishPhoneNumber: string) =>\n !isEmpty(finnishPhoneNumber) && FINNISH_PHONE_NUMBER_REGEXP.test(finnishPhoneNumber);\n\n/**\n * Checks that the provided Swedish postal code is correctly formatted.\n * @param swedishPostalCode the postal code to validate\n */\nexport const isValidSwedishPostalCode = (swedishPostalCode: string) =>\n !isEmpty(swedishPostalCode) && SWEDISH_POSTAL_CODE_REGEXP.test(swedishPostalCode);\n/**\n * Checks that the provided International postal code is correctly formated.\n * @param internationalPostalCode the postal code to validate\n */\nexport const isValidInternationalPostalCode = (internationalPostalCode: string) =>\n !isEmpty(internationalPostalCode) && INTERNATIONAL_POSTAL_CODE_REGEXP.test(internationalPostalCode);\n\n/**\n * Checks that the provided Finnish postal code is correctly formatted.\n * @param finnishPostalCode the postal code to validate\n */\nexport const isValidFinnishPostalCode = (finnishPostalCode: string) =>\n !isEmpty(finnishPostalCode) && FINNISH_POSTAL_CODE_REGEXP.test(finnishPostalCode);\n\n/**\n * Checks that the provided Swedish premise identifier is correctly formatted.\n * @param swedishPremiseId the premise id to validate\n */\nexport const isValidSwedishPremiseId = (swedishPremiseId: string) =>\n !isEmpty(swedishPremiseId) &&\n SWEDISH_PREMISE_ID_REGEXP.test(swedishPremiseId) &&\n hasValidSwedishPremiseChecksum(swedishPremiseId);\n\n/**\n * Checks that the provided password is correctly formatted.\n * @param password the password to validate\n */\nexport const isValidPassword = (password: string) => {\n return PASSWORD_BR_16.test(password);\n};\n\n/**\n * Checks that the provided street name is correctly formatted\n * for both premise and invoice details\n * @param streetName the street name to validate\n */\nexport const isValidStreetName = (streetName: string) => {\n return STREET_NAME_INVOICE_REGEXP.test(streetName);\n};\n\n/**\n * Checks that the provided care of address is correctly formatted.\n * @param careOfAddress the careOfAddress to validate\n */\nexport const isValidCareOfAddress = (careOfAddress: string) => {\n return CARE_OF_ADDRESS_REGEX.test(careOfAddress);\n};\n\n/**\n * Checks that the provided Swedish or Finnish postal town is correctly formatted.\n * @param postalTown the postal town to validate\n */\nexport const isValidSwedishFinnishPostalTown = (postalTown: string) =>\n !isEmpty(postalTown) && SWEDISH_FINNISH_POSTAL_TOWN_REGEXP.test(postalTown);\n\n/**\n * Validates a Grid Area against a list of Grid Area Id found through below source.\n * @see [Grid Area (Whole Sweden)](https://mimer.svk.se/NetworkArea/Search)\n * @param gridAreaId The grid area id to validate\n */\nexport const isValidGridAreaId = (gridAreaId: string) => {\n // @ts-ignore Keep as a list\n const GRID_AREA_ID = [\n \"AJG\",\n \"ALS\",\n \"AMS\",\n \"ALV\",\n \"ARD\",\n \"AJB\",\n \"ARV\",\n \"AVE\",\n \"AVR\",\n \"BEF\",\n \"BRG\",\n \"BGS\",\n \"BGO\",\n \"BEV\",\n \"BJR\",\n \"BKE\",\n \"BJL\",\n \"BJK\",\n \"BLE\",\n \"BLI\",\n \"BDN\",\n \"NBL\",\n \"BOO\",\n \"BHM\",\n \"BRL\",\n \"BRS\",\n \"BDL\",\n \"BMA\",\n \"BYG\",\n \"CBR\",\n \"DAL\",\n \"DAD\",\n \"DAP\",\n \"DAN\",\n \"DFS\",\n \"DOF\",\n \"DRV\",\n \"EBN\",\n \"EKO\",\n \"ESJ\",\n \"EBA\",\n \"EKG\",\n \"ESK\",\n \"FGA\",\n \"FBN\",\n \"FBG\",\n \"FLN\",\n \"FLO\",\n \"FPD\",\n \"FSB\",\n \"FLE\",\n \"FOB\",\n \"FBA\",\n \"FRV\",\n \"FMD\",\n \"GNF\",\n \"GAM\",\n \"GAB\",\n \"GDB\",\n \"GIV\",\n \"GTL\",\n \"GTP\",\n \"GBN\",\n \"GLG\",\n \"GVL\",\n \"GTA\",\n \"GBG\",\n \"HBO\",\n \"HLB\",\n \"HLD\",\n \"NHA\",\n \"HVI\",\n \"HMD\",\n \"HAM\",\n \"HMH\",\n \"HMM\",\n \"HMR\",\n \"HRS\",\n \"HVN\",\n \"HBY\",\n \"HDS\",\n \"HBG\",\n \"HLJ\",\n \"HJO\",\n \"HJM\",\n \"HOF\",\n \"HDL\",\n \"HDG\",\n \"HDV\",\n \"HUV\",\n \"HAL\",\n \"HAR\",\n \"HJD\",\n \"HJN\",\n \"HSD\",\n \"HRA\",\n \"HOG\",\n \"HOR\",\n \"ING\",\n \"JUJ\",\n \"JMT\",\n \"JML\",\n \"JKE\",\n \"JRA\",\n \"JPS\",\n \"JNK\",\n \"KAB\",\n \"KMR\",\n \"KBG\",\n \"KHN\",\n \"KSA\",\n \"KKA\",\n \"KST\",\n \"KHB\",\n \"KEM\",\n \"KND\",\n \"KKB\",\n \"KLK\",\n \"KPN\",\n \"KNP\",\n \"KON\",\n \"KOB\",\n \"KNS\",\n \"KBR\",\n \"KRF\",\n \"KRS\",\n \"KRH\",\n \"KRG\",\n \"KBA\",\n \"KUB\",\n \"KUV\",\n \"KVI\",\n \"KVM\",\n \"LHM\",\n \"LKA\",\n \"LER\",\n \"LRM\",\n \"LDG\",\n \"LDK\",\n \"LED\",\n \"LGR\",\n \"LDB\",\n \"LNK\",\n \"LEV\",\n \"LJV\",\n \"LBY\",\n \"LJD\",\n \"LMA\",\n \"LUL\",\n \"LAO\",\n \"LUN\",\n \"LYC\",\n \"LYX\",\n \"LYS\",\n \"MBT\",\n \"MAF\",\n \"MMO\",\n \"MLG\",\n \"MAI\",\n \"MSD\",\n \"MEL\",\n \"VFM\",\n \"MBY\",\n \"MOR\",\n \"MYN\",\n \"MDL\",\n \"MRP\",\n \"NRL\",\n \"NSF\",\n \"NOB\",\n \"NVS\",\n \"VFN\",\n \"NTE\",\n \"NSB\",\n \"NBR\",\n \"NYK\",\n \"NYD\",\n \"NHN\",\n \"NFO\",\n \"NKL\",\n \"NSO\",\n \"OBO\",\n \"OLS\",\n \"OSD\",\n \"ORV\",\n \"ORT\",\n \"OHN\",\n \"OXD\",\n \"PTE\",\n \"PIB\",\n \"RSJ\",\n \"RBY\",\n \"RSK\",\n \"RBF\",\n \"ROY\",\n \"SAH\",\n \"SHT\",\n \"SDV\",\n \"SIG\",\n \"SIH\",\n \"SJO\",\n \"SHD\",\n \"SJB\",\n \"SKA\",\n \"SKT\",\n \"SKF\",\n \"SKR\",\n \"SKP\",\n \"SBR\",\n \"SKL\",\n \"SNM\",\n \"SKV\",\n \"SKH\",\n \"SKN\",\n \"SKD\",\n \"SLD\",\n \"SMB\",\n \"SMN\",\n \"SML\",\n \"SMS\",\n \"SOT\",\n \"SFP\",\n \"ST1\",\n \"ST2\",\n \"ST3\",\n \"ST4\",\n \"STF\",\n \"SGD\",\n \"STH\",\n \"STO\",\n \"ARN\",\n \"SGS\",\n \"STU\",\n \"SRF\",\n \"SUR\",\n \"SUV\",\n \"SBV\",\n \"SWP\",\n \"SYM\",\n \"SYD\",\n \"SBK\",\n \"SFE\",\n \"STR\",\n \"SSJ\",\n \"SHN\",\n \"SDT\",\n \"SBG\",\n \"SBL\",\n \"TIB\",\n \"THM\",\n \"TLB\",\n \"TDN\",\n \"TNN\",\n \"TDO\",\n \"TOR\",\n \"TOS\",\n \"TNS\",\n \"TBG\",\n \"TRH\",\n \"TRS\",\n \"TUM\",\n \"TYS\",\n \"TYR\",\n \"TBY\",\n \"TRE\",\n \"TBA\",\n \"UVA\",\n \"UHN\",\n \"UMA\",\n \"UME\",\n \"UMD\",\n \"UMN\",\n \"UMO\",\n \"UPN\",\n \"UPS\",\n \"UPV\",\n \"UPO\",\n \"URM\",\n \"UPP\",\n \"VGD\",\n \"VAG\",\n \"VAB\",\n \"VAT\",\n \"VNB\",\n \"VAR\",\n \"VBG\",\n \"VBN\",\n \"VBS\",\n \"VDM\",\n \"VTL\",\n \"VGF\",\n \"VMA\",\n \"VBY\",\n \"VDN\",\n \"VIG\",\n \"VLB\",\n \"VMD\",\n \"VAL\",\n \"VML\",\n \"VMO\",\n \"VRO\",\n \"VAS\",\n \"VAD\",\n \"VBL\",\n \"VBR\",\n \"VBK\",\n \"VVI\",\n \"VLS\",\n \"VFV\",\n \"VAN\",\n \"VXO\",\n \"YST\",\n \"ALL\",\n \"ADL\",\n \"AKB\",\n \"ALM\",\n \"AML\",\n \"ANE\",\n \"ANN\",\n \"AMN\",\n \"ANG\",\n \"ARS\",\n \"ASL\",\n \"AVD\",\n \"ABB\",\n \"AHB\",\n \"OCK\",\n \"OLD\",\n \"OVK\",\n \"OFB\",\n \"OLN\",\n \"OHM\",\n \"OGO\",\n \"VFO\",\n ];\n\n return includes(__, GRID_AREA_ID)(gridAreaId);\n};\n\n/**\n * Checks that provided date is a Swedish weekday.\n * @param date the date to validate\n */\nexport const isValidSwedishWeekday = (date: Date) => {\n return !isWeekend(date) && !isSwedishPublicHoliday(date);\n};\n\n/**\n * Checks that provided date is a Finnish weekday.\n * @param date the date to validate\n */\nexport const isValidFinnishWeekday = (date: Date) => {\n return !isWeekend(date) && !isFinnishPublicHoliday(date);\n};\n","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarYears from \"../differenceInCalendarYears/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInYears\n * @category Year Helpers\n * @summary Get the number of full years between the given dates.\n *\n * @description\n * Get the number of full years between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInYears(new Date(2015, 1, 11), new Date(2013, 11, 31))\n * //=> 1\n */\nexport default function differenceInYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarYears(dateLeft, dateRight));\n\n // Set both dates to a valid leap year for accurate comparison when dealing\n // with leap days\n dateLeft.setFullYear(1584);\n dateRight.setFullYear(1584);\n\n // Math.abs(diff in full years - diff in calendar years) === 1 if last calendar year is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastYearNotFull = compareAsc(dateLeft, dateRight) === -sign;\n var result = sign * (difference - Number(isLastYearNotFull));\n // Prevent negative zero\n return result === 0 ? 0 : result;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_HOUR = 3600000;\n\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the hours added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * const result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\nexport default function addHours(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name areIntervalsOverlapping\n * @category Interval Helpers\n * @summary Is the given time interval overlapping with another time interval?\n *\n * @description\n * Is the given time interval overlapping with another time interval? Adjacent intervals do not count as overlapping.\n *\n * @param {Interval} intervalLeft - the first interval to compare. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @param {Interval} intervalRight - the second interval to compare. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @param {Object} [options] - the object with options\n * @param {Boolean} [options.inclusive=false] - whether the comparison is inclusive or not\n * @returns {Boolean} whether the time intervals are overlapping\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For overlapping time intervals:\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) }\n * )\n * //=> true\n *\n * @example\n * // For non-overlapping time intervals:\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 21), end: new Date(2014, 0, 22) }\n * )\n * //=> false\n *\n * @example\n * // For adjacent time intervals:\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 20), end: new Date(2014, 0, 30) }\n * )\n * //=> false\n *\n * @example\n * // Using the inclusive option:\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 20), end: new Date(2014, 0, 24) }\n * )\n * //=> false\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 20), end: new Date(2014, 0, 24) },\n * { inclusive: true }\n * )\n * //=> true\n */\nexport default function areIntervalsOverlapping(intervalLeft, intervalRight, options) {\n requiredArgs(2, arguments);\n var leftStartTime = toDate(intervalLeft === null || intervalLeft === void 0 ? void 0 : intervalLeft.start).getTime();\n var leftEndTime = toDate(intervalLeft === null || intervalLeft === void 0 ? void 0 : intervalLeft.end).getTime();\n var rightStartTime = toDate(intervalRight === null || intervalRight === void 0 ? void 0 : intervalRight.start).getTime();\n var rightEndTime = toDate(intervalRight === null || intervalRight === void 0 ? void 0 : intervalRight.end).getTime();\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(leftStartTime <= leftEndTime && rightStartTime <= rightEndTime)) {\n throw new RangeError('Invalid interval');\n }\n if (options !== null && options !== void 0 && options.inclusive) {\n return leftStartTime <= rightEndTime && rightStartTime <= leftEndTime;\n }\n return leftStartTime < rightEndTime && rightStartTime < leftEndTime;\n}","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","import getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport default function differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var startOfDayLeft = startOfDay(dirtyDateLeft);\n var startOfDayRight = startOfDay(dirtyDateRight);\n var timestampLeft = startOfDayLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n var timestampRight = startOfDayRight.getTime() - getTimezoneOffsetInMilliseconds(startOfDayRight);\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a day is not constant\n // (e.g. it's different in the day of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY);\n}","import startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day (and year and month)?\n *\n * @description\n * Are the given dates in the same day (and year and month)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same day (and year and month)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n *\n * @example\n * // Are 4 September and 4 October in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2014, 9, 4))\n * //=> false\n *\n * @example\n * // Are 4 September, 2014 and 4 September, 2015 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2015, 8, 4))\n * //=> false\n */\nexport default function isSameDay(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfDay = startOfDay(dirtyDateLeft);\n var dateRightStartOfDay = startOfDay(dirtyDateRight);\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","import addDays from \"../addDays/index.js\";\nimport differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport isSameDay from \"../isSameDay/index.js\";\nimport isValid from \"../isValid/index.js\";\nimport isWeekend from \"../isWeekend/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name differenceInBusinessDays\n * @category Day Helpers\n * @summary Get the number of business days between the given dates.\n *\n * @description\n * Get the number of business day periods between the given dates.\n * Business days being days that arent in the weekend.\n * Like `differenceInCalendarDays`, the function removes the times from\n * the dates before calculating the difference.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of business days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many business days are between\n * // 10 January 2014 and 20 July 2014?\n * const result = differenceInBusinessDays(\n * new Date(2014, 6, 20),\n * new Date(2014, 0, 10)\n * )\n * //=> 136\n *\n * // How many business days are between\n * // 30 November 2021 and 1 November 2021?\n * const result = differenceInBusinessDays(\n * new Date(2021, 10, 30),\n * new Date(2021, 10, 1)\n * )\n * //=> 21\n *\n * // How many business days are between\n * // 1 November 2021 and 1 December 2021?\n * const result = differenceInBusinessDays(\n * new Date(2021, 10, 1),\n * new Date(2021, 11, 1)\n * )\n * //=> -22\n *\n * // How many business days are between\n * // 1 November 2021 and 1 November 2021 ?\n * const result = differenceInBusinessDays(\n * new Date(2021, 10, 1),\n * new Date(2021, 10, 1)\n * )\n * //=> 0\n */\nexport default function differenceInBusinessDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n if (!isValid(dateLeft) || !isValid(dateRight)) return NaN;\n var calendarDifference = differenceInCalendarDays(dateLeft, dateRight);\n var sign = calendarDifference < 0 ? -1 : 1;\n var weeks = toInteger(calendarDifference / 7);\n var result = weeks * 5;\n dateRight = addDays(dateRight, weeks * 7);\n\n // the loop below will run at most 6 times to account for the remaining days that don't makeup a full week\n while (!isSameDay(dateLeft, dateRight)) {\n // sign is used to account for both negative and positive differences\n result += isWeekend(dateRight) ? 0 : sign;\n dateRight = addDays(dateRight, sign);\n }\n return result === 0 ? 0 : result;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport default function endOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the end of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport default function endOfWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n date.setDate(date.getDate() + diff);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import endOfWeek from \"../endOfWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the end of an ISO week for the given date.\n *\n * @description\n * Return the end of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of an ISO week for 2 September 2014 11:55:00:\n * const result = endOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport default function endOfISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n return endOfWeek(dirtyDate, {\n weekStartsOn: 1\n });\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfYear\n * @category Year Helpers\n * @summary Return the end of a year for the given date.\n *\n * @description\n * Return the end of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a year for 2 September 2014 11:55:00:\n * const result = endOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 23:59:59.999\n */\nexport default function endOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n date.setFullYear(year + 1, 0, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function getUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getUTCWeekYear(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, options);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\nvar formatters = {\n // Year\n y: function y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function M(date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function d(date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n case 'aaa':\n return dayPeriodEnumValue;\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function h(date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = getUTCISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = getUTCWeek(date, options);\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function H(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function K(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n return lightFormatters.m(date, token);\n },\n // Second\n s: function s(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function S(date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n if (timezoneOffset === 0) {\n return 'Z';\n }\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\nexport default formatters;","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n var dateTimeFormat;\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n }\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n return result;\n};\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n if (!matchResult) {\n return null;\n }\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n return undefined;\n}\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}","import defaultLocale from \"../../locale/en-US/index.js\";\nexport default defaultLocale;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n case 2:\n return number + 'nd';\n case 3:\n return number + 'rd';\n }\n }\n return number + 'th';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n var originalDate = toDate(dirtyDate);\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n var formatter = formatters[firstCharacter];\n if (formatter) {\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n return substring;\n }).join('');\n return result;\n}\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n if (!matched) {\n return input;\n }\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}","import toDate from \"../toDate/index.js\";\nimport addLeadingZeros from \"../_lib/addLeadingZeros/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name formatISO\n * @category Common Helpers\n * @summary Format the date according to the ISO 8601 standard (https://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a003169814.htm).\n *\n * @description\n * Return the formatted date string in ISO 8601 format. Options may be passed to control the parts and notations of the date.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {'extended'|'basic'} [options.format='extended'] - if 'basic', hide delimiters between date and time values.\n * @param {'complete'|'date'|'time'} [options.representation='complete'] - format date, time with local time zone, or both.\n * @returns {String} the formatted date string (in local time zone)\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.format` must be 'extended' or 'basic'\n * @throws {RangeError} `options.representation` must be 'date', 'time' or 'complete'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format (local time zone is UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52))\n * //=> '2019-09-18T19:00:52Z'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601, short format (local time zone is UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { format: 'basic' })\n * //=> '20190918T190052'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format, date only:\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { representation: 'date' })\n * //=> '2019-09-18'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format, time only (local time zone is UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { representation: 'time' })\n * //=> '19:00:52Z'\n */\nexport default function formatISO(date, options) {\n var _options$format, _options$representati;\n requiredArgs(1, arguments);\n var originalDate = toDate(date);\n if (isNaN(originalDate.getTime())) {\n throw new RangeError('Invalid time value');\n }\n var format = String((_options$format = options === null || options === void 0 ? void 0 : options.format) !== null && _options$format !== void 0 ? _options$format : 'extended');\n var representation = String((_options$representati = options === null || options === void 0 ? void 0 : options.representation) !== null && _options$representati !== void 0 ? _options$representati : 'complete');\n if (format !== 'extended' && format !== 'basic') {\n throw new RangeError(\"format must be 'extended' or 'basic'\");\n }\n if (representation !== 'date' && representation !== 'time' && representation !== 'complete') {\n throw new RangeError(\"representation must be 'date', 'time', or 'complete'\");\n }\n var result = '';\n var tzOffset = '';\n var dateDelimiter = format === 'extended' ? '-' : '';\n var timeDelimiter = format === 'extended' ? ':' : '';\n\n // Representation is either 'date' or 'complete'\n if (representation !== 'time') {\n var day = addLeadingZeros(originalDate.getDate(), 2);\n var month = addLeadingZeros(originalDate.getMonth() + 1, 2);\n var year = addLeadingZeros(originalDate.getFullYear(), 4);\n\n // yyyyMMdd or yyyy-MM-dd.\n result = \"\".concat(year).concat(dateDelimiter).concat(month).concat(dateDelimiter).concat(day);\n }\n\n // Representation is either 'time' or 'complete'\n if (representation !== 'date') {\n // Add the timezone.\n var offset = originalDate.getTimezoneOffset();\n if (offset !== 0) {\n var absoluteOffset = Math.abs(offset);\n var hourOffset = addLeadingZeros(Math.floor(absoluteOffset / 60), 2);\n var minuteOffset = addLeadingZeros(absoluteOffset % 60, 2);\n // If less than 0, the sign is +, because it is ahead of time.\n var sign = offset < 0 ? '+' : '-';\n tzOffset = \"\".concat(sign).concat(hourOffset, \":\").concat(minuteOffset);\n } else {\n tzOffset = 'Z';\n }\n var hour = addLeadingZeros(originalDate.getHours(), 2);\n var minute = addLeadingZeros(originalDate.getMinutes(), 2);\n var second = addLeadingZeros(originalDate.getSeconds(), 2);\n\n // If there's also date, separate it with time with 'T'\n var separator = result === '' ? '' : 'T';\n\n // Creates a time string consisting of hour, minute, and second, separated by delimiters, if defined.\n var time = [hour, minute, second].join(timeDelimiter);\n\n // HHmmss or HH:mm:ss.\n result = \"\".concat(result).concat(separator).concat(time).concat(tzOffset);\n }\n return result;\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name fromUnixTime\n * @category Timestamp Helpers\n * @summary Create a date from a Unix timestamp.\n *\n * @description\n * Create a date from a Unix timestamp (in seconds). Decimal values will be discarded.\n *\n * @param {Number} unixTime - the given Unix timestamp (in seconds)\n * @returns {Date} the date\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Create the date 29 February 2012 11:45:05:\n * const result = fromUnixTime(1330515905)\n * //=> Wed Feb 29 2012 11:45:05\n */\nexport default function fromUnixTime(dirtyUnixTime) {\n requiredArgs(1, arguments);\n var unixTime = toInteger(dirtyUnixTime);\n return toDate(unixTime * 1000);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param {Date|Number} date - the date that should be after the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * const result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nexport default function isAfter(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() > dateToCompare.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param {Date|Number} date - the date that should be before the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport default function isBefore(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() < dateToCompare.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameMonth\n * @category Month Helpers\n * @summary Are the given dates in the same month (and year)?\n *\n * @description\n * Are the given dates in the same month (and year)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same month (and year)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n *\n * @example\n * // Are 2 September 2014 and 25 September 2015 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2015, 8, 25))\n * //=> false\n */\nexport default function isSameMonth(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear() && dateLeft.getMonth() === dateRight.getMonth();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameYear\n * @category Year Helpers\n * @summary Are the given dates in the same year?\n *\n * @description\n * Are the given dates in the same year?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same year\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same year?\n * const result = isSameYear(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n */\nexport default function isSameYear(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isMonday\n * @category Weekday Helpers\n * @summary Is the given date Monday?\n *\n * @description\n * Is the given date Monday?\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Monday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 22 September 2014 Monday?\n * const result = isMonday(new Date(2014, 8, 22))\n * //=> true\n */\nexport default function isMonday(date) {\n requiredArgs(1, arguments);\n return toDate(date).getDay() === 1;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isWithinInterval\n * @category Interval Helpers\n * @summary Is the given date within the interval?\n *\n * @description\n * Is the given date within the interval? (Including start and end.)\n *\n * @param {Date|Number} date - the date to check\n * @param {Interval} interval - the interval to check\n * @returns {Boolean} the date is within the interval\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For the date within the interval:\n * isWithinInterval(new Date(2014, 0, 3), {\n * start: new Date(2014, 0, 1),\n * end: new Date(2014, 0, 7)\n * })\n * //=> true\n *\n * @example\n * // For the date outside of the interval:\n * isWithinInterval(new Date(2014, 0, 10), {\n * start: new Date(2014, 0, 1),\n * end: new Date(2014, 0, 7)\n * })\n * //=> false\n *\n * @example\n * // For date equal to interval start:\n * isWithinInterval(date, { start, end: date }) // => true\n *\n * @example\n * // For date equal to interval end:\n * isWithinInterval(date, { start: date, end }) // => true\n */\nexport default function isWithinInterval(dirtyDate, interval) {\n requiredArgs(2, arguments);\n var time = toDate(dirtyDate).getTime();\n var startTime = toDate(interval.start).getTime();\n var endTime = toDate(interval.end).getTime();\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startTime <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n return time >= startTime && time <= endTime;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name lastDayOfYear\n * @category Year Helpers\n * @summary Return the last day of a year for the given date.\n *\n * @description\n * Return the last day of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the last day of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of a year for 2 September 2014 11:55:00:\n * const result = lastDayOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 00:00:00\n */\nexport default function lastDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n date.setFullYear(year + 1, 0, 0);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachDayOfInterval\n * @category Interval Helpers\n * @summary Return the array of dates within the specified time interval.\n *\n * @description\n * Return the array of dates within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @param {Object} [options] - an object with options.\n * @param {Number} [options.step=1] - the step to increment by. The value should be more than 1.\n * @returns {Date[]} the array with starts of days from the day of the interval start to the day of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.step` must be a number greater than 1\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each day between 6 October 2014 and 10 October 2014:\n * const result = eachDayOfInterval({\n * start: new Date(2014, 9, 6),\n * end: new Date(2014, 9, 10)\n * })\n * //=> [\n * // Mon Oct 06 2014 00:00:00,\n * // Tue Oct 07 2014 00:00:00,\n * // Wed Oct 08 2014 00:00:00,\n * // Thu Oct 09 2014 00:00:00,\n * // Fri Oct 10 2014 00:00:00\n * // ]\n */\nexport default function eachDayOfInterval(dirtyInterval, options) {\n var _options$step;\n requiredArgs(1, arguments);\n var interval = dirtyInterval || {};\n var startDate = toDate(interval.start);\n var endDate = toDate(interval.end);\n var endTime = endDate.getTime();\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n var dates = [];\n var currentDate = startDate;\n currentDate.setHours(0, 0, 0, 0);\n var step = Number((_options$step = options === null || options === void 0 ? void 0 : options.step) !== null && _options$step !== void 0 ? _options$step : 1);\n if (step < 1 || isNaN(step)) throw new RangeError('`options.step` must be a number greater than 1');\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate));\n currentDate.setDate(currentDate.getDate() + step);\n currentDate.setHours(0, 0, 0, 0);\n }\n return dates;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachMonthOfInterval\n * @category Interval Helpers\n * @summary Return the array of months within the specified time interval.\n *\n * @description\n * Return the array of months within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @returns {Date[]} the array with starts of months from the month of the interval start to the month of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each month between 6 February 2014 and 10 August 2014:\n * const result = eachMonthOfInterval({\n * start: new Date(2014, 1, 6),\n * end: new Date(2014, 7, 10)\n * })\n * //=> [\n * // Sat Feb 01 2014 00:00:00,\n * // Sat Mar 01 2014 00:00:00,\n * // Tue Apr 01 2014 00:00:00,\n * // Thu May 01 2014 00:00:00,\n * // Sun Jun 01 2014 00:00:00,\n * // Tue Jul 01 2014 00:00:00,\n * // Fri Aug 01 2014 00:00:00\n * // ]\n */\nexport default function eachMonthOfInterval(dirtyInterval) {\n requiredArgs(1, arguments);\n var interval = dirtyInterval || {};\n var startDate = toDate(interval.start);\n var endDate = toDate(interval.end);\n var endTime = endDate.getTime();\n var dates = [];\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n var currentDate = startDate;\n currentDate.setHours(0, 0, 0, 0);\n currentDate.setDate(1);\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate));\n currentDate.setMonth(currentDate.getMonth() + 1);\n }\n return dates;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachYearOfInterval\n * @category Interval Helpers\n * @summary Return the array of yearly timestamps within the specified time interval.\n *\n * @description\n * Return the array of yearly timestamps within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @returns {Date[]} the array with starts of yearly timestamps from the month of the interval start to the month of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each year between 6 February 2014 and 10 August 2017:\n * const result = eachYearOfInterval({\n * start: new Date(2014, 1, 6),\n * end: new Date(2017, 7, 10)\n * })\n * //=> [\n * // Wed Jan 01 2014 00:00:00,\n * // Thu Jan 01 2015 00:00:00,\n * // Fri Jan 01 2016 00:00:00,\n * // Sun Jan 01 2017 00:00:00\n * // ]\n */\nexport default function eachYearOfInterval(dirtyInterval) {\n requiredArgs(1, arguments);\n var interval = dirtyInterval || {};\n var startDate = toDate(interval.start);\n var endDate = toDate(interval.end);\n var endTime = endDate.getTime();\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n var dates = [];\n var currentDate = startDate;\n currentDate.setHours(0, 0, 0, 0);\n currentDate.setMonth(0, 1);\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate));\n currentDate.setFullYear(currentDate.getFullYear() + 1);\n }\n return dates;\n}","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nexport { _arrayLikeToArray as default };","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nfunction _createForOfIteratorHelper(r, e) {\n var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (!t) {\n if (Array.isArray(r) || (t = unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) {\n t && (r = t);\n var _n = 0,\n F = function F() {};\n return {\n s: F,\n n: function n() {\n return _n >= r.length ? {\n done: !0\n } : {\n done: !1,\n value: r[_n++]\n };\n },\n e: function e(r) {\n throw r;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var o,\n a = !0,\n u = !1;\n return {\n s: function s() {\n t = t.call(r);\n },\n n: function n() {\n var r = t.next();\n return a = r.done, r;\n },\n e: function e(r) {\n u = !0, o = r;\n },\n f: function f() {\n try {\n a || null == t[\"return\"] || t[\"return\"]();\n } finally {\n if (u) throw o;\n }\n }\n };\n}\nexport { _createForOfIteratorHelper as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nexport { _unsupportedIterableToArray as default };","export default function assign(target, object) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n for (var property in object) {\n if (Object.prototype.hasOwnProperty.call(object, property)) {\n ;\n target[property] = object[property];\n }\n }\n return target;\n}","function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nexport { _assertThisInitialized as default };","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inherits(t, e) {\n if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n t.prototype = Object.create(e && e.prototype, {\n constructor: {\n value: t,\n writable: !0,\n configurable: !0\n }\n }), Object.defineProperty(t, \"prototype\", {\n writable: !1\n }), e && setPrototypeOf(t, e);\n}\nexport { _inherits as default };","function _getPrototypeOf(t) {\n return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n return t.__proto__ || Object.getPrototypeOf(t);\n }, _getPrototypeOf(t);\n}\nexport { _getPrototypeOf as default };","function _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\nexport { _isNativeReflectConstruct as default };","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nfunction _possibleConstructorReturn(t, e) {\n if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e;\n if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n return assertThisInitialized(t);\n}\nexport { _possibleConstructorReturn as default };","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nfunction _createSuper(t) {\n var r = isNativeReflectConstruct();\n return function () {\n var e,\n o = getPrototypeOf(t);\n if (r) {\n var s = getPrototypeOf(this).constructor;\n e = Reflect.construct(o, arguments, s);\n } else e = o.apply(this, arguments);\n return possibleConstructorReturn(this, e);\n };\n}\nexport { _createSuper as default };","function _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nexport { _classCallCheck as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), e;\n}\nexport { _createClass as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","import _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar TIMEZONE_UNIT_PRIORITY = 10;\nexport var Setter = /*#__PURE__*/function () {\n function Setter() {\n _classCallCheck(this, Setter);\n _defineProperty(this, \"priority\", void 0);\n _defineProperty(this, \"subPriority\", 0);\n }\n _createClass(Setter, [{\n key: \"validate\",\n value: function validate(_utcDate, _options) {\n return true;\n }\n }]);\n return Setter;\n}();\nexport var ValueSetter = /*#__PURE__*/function (_Setter) {\n _inherits(ValueSetter, _Setter);\n var _super = _createSuper(ValueSetter);\n function ValueSetter(value, validateValue, setValue, priority, subPriority) {\n var _this;\n _classCallCheck(this, ValueSetter);\n _this = _super.call(this);\n _this.value = value;\n _this.validateValue = validateValue;\n _this.setValue = setValue;\n _this.priority = priority;\n if (subPriority) {\n _this.subPriority = subPriority;\n }\n return _this;\n }\n _createClass(ValueSetter, [{\n key: \"validate\",\n value: function validate(utcDate, options) {\n return this.validateValue(utcDate, this.value, options);\n }\n }, {\n key: \"set\",\n value: function set(utcDate, flags, options) {\n return this.setValue(utcDate, flags, this.value, options);\n }\n }]);\n return ValueSetter;\n}(Setter);\nexport var DateToSystemTimezoneSetter = /*#__PURE__*/function (_Setter2) {\n _inherits(DateToSystemTimezoneSetter, _Setter2);\n var _super2 = _createSuper(DateToSystemTimezoneSetter);\n function DateToSystemTimezoneSetter() {\n var _this2;\n _classCallCheck(this, DateToSystemTimezoneSetter);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this2 = _super2.call.apply(_super2, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this2), \"priority\", TIMEZONE_UNIT_PRIORITY);\n _defineProperty(_assertThisInitialized(_this2), \"subPriority\", -1);\n return _this2;\n }\n _createClass(DateToSystemTimezoneSetter, [{\n key: \"set\",\n value: function set(date, flags) {\n if (flags.timestampIsSet) {\n return date;\n }\n var convertedDate = new Date(0);\n convertedDate.setFullYear(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n convertedDate.setHours(date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n return convertedDate;\n }\n }]);\n return DateToSystemTimezoneSetter;\n}(Setter);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { ValueSetter } from \"./Setter.js\";\nexport var Parser = /*#__PURE__*/function () {\n function Parser() {\n _classCallCheck(this, Parser);\n _defineProperty(this, \"incompatibleTokens\", void 0);\n _defineProperty(this, \"priority\", void 0);\n _defineProperty(this, \"subPriority\", void 0);\n }\n _createClass(Parser, [{\n key: \"run\",\n value: function run(dateString, token, match, options) {\n var result = this.parse(dateString, token, match, options);\n if (!result) {\n return null;\n }\n return {\n setter: new ValueSetter(result.value, this.validate, this.set, this.priority, this.subPriority),\n rest: result.rest\n };\n }\n }, {\n key: \"validate\",\n value: function validate(_utcDate, _value, _options) {\n return true;\n }\n }]);\n return Parser;\n}();","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nexport var EraParser = /*#__PURE__*/function (_Parser) {\n _inherits(EraParser, _Parser);\n var _super = _createSuper(EraParser);\n function EraParser() {\n var _this;\n _classCallCheck(this, EraParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 140);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['R', 'u', 't', 'T']);\n return _this;\n }\n _createClass(EraParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return match.era(dateString, {\n width: 'abbreviated'\n }) || match.era(dateString, {\n width: 'narrow'\n });\n // A, B\n case 'GGGGG':\n return match.era(dateString, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return match.era(dateString, {\n width: 'wide'\n }) || match.era(dateString, {\n width: 'abbreviated'\n }) || match.era(dateString, {\n width: 'narrow'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n flags.era = value;\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return EraParser;\n}(Parser);","export var numericPatterns = {\n month: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/,\n // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/,\n // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/,\n // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/,\n // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/,\n // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/,\n // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n minute: /^[0-5]?\\d/,\n // 0 to 59\n second: /^[0-5]?\\d/,\n // 0 to 59\n\n singleDigit: /^\\d/,\n // 0 to 9\n twoDigits: /^\\d{1,2}/,\n // 0 to 99\n threeDigits: /^\\d{1,3}/,\n // 0 to 999\n fourDigits: /^\\d{1,4}/,\n // 0 to 9999\n\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/,\n // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/,\n // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/,\n // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n};\n\nexport var timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n};","/**\n * Days in 1 week.\n *\n * @name daysInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInWeek = 7;\n\n/**\n * Days in 1 year\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n *\n * @name daysInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInYear = 365.2425;\n\n/**\n * Maximum allowed time.\n *\n * @name maxTime\n * @constant\n * @type {number}\n * @default\n */\nexport var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * Milliseconds in 1 minute\n *\n * @name millisecondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInMinute = 60000;\n\n/**\n * Milliseconds in 1 hour\n *\n * @name millisecondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInHour = 3600000;\n\n/**\n * Milliseconds in 1 second\n *\n * @name millisecondsInSecond\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInSecond = 1000;\n\n/**\n * Minimum allowed time.\n *\n * @name minTime\n * @constant\n * @type {number}\n * @default\n */\nexport var minTime = -maxTime;\n\n/**\n * Minutes in 1 hour\n *\n * @name minutesInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var minutesInHour = 60;\n\n/**\n * Months in 1 quarter\n *\n * @name monthsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexport var monthsInQuarter = 3;\n\n/**\n * Months in 1 year\n *\n * @name monthsInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var monthsInYear = 12;\n\n/**\n * Quarters in 1 year\n *\n * @name quartersInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var quartersInYear = 4;\n\n/**\n * Seconds in 1 hour\n *\n * @name secondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInHour = 3600;\n\n/**\n * Seconds in 1 minute\n *\n * @name secondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInMinute = 60;\n\n/**\n * Seconds in 1 day\n *\n * @name secondsInDay\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInDay = secondsInHour * 24;\n\n/**\n * Seconds in 1 week\n *\n * @name secondsInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInWeek = secondsInDay * 7;\n\n/**\n * Seconds in 1 year\n *\n * @name secondsInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInYear = secondsInDay * daysInYear;\n\n/**\n * Seconds in 1 month\n *\n * @name secondsInMonth\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInMonth = secondsInYear / 12;\n\n/**\n * Seconds in 1 quarter\n *\n * @name secondsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInQuarter = secondsInMonth * 3;","import { millisecondsInHour, millisecondsInMinute, millisecondsInSecond } from \"../../constants/index.js\";\nimport { numericPatterns } from \"./constants.js\";\nexport function mapValue(parseFnResult, mapFn) {\n if (!parseFnResult) {\n return parseFnResult;\n }\n return {\n value: mapFn(parseFnResult.value),\n rest: parseFnResult.rest\n };\n}\nexport function parseNumericPattern(pattern, dateString) {\n var matchResult = dateString.match(pattern);\n if (!matchResult) {\n return null;\n }\n return {\n value: parseInt(matchResult[0], 10),\n rest: dateString.slice(matchResult[0].length)\n };\n}\nexport function parseTimezonePattern(pattern, dateString) {\n var matchResult = dateString.match(pattern);\n if (!matchResult) {\n return null;\n }\n\n // Input is 'Z'\n if (matchResult[0] === 'Z') {\n return {\n value: 0,\n rest: dateString.slice(1)\n };\n }\n var sign = matchResult[1] === '+' ? 1 : -1;\n var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n return {\n value: sign * (hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * millisecondsInSecond),\n rest: dateString.slice(matchResult[0].length)\n };\n}\nexport function parseAnyDigitsSigned(dateString) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, dateString);\n}\nexport function parseNDigits(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, dateString);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, dateString);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, dateString);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, dateString);\n default:\n return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), dateString);\n }\n}\nexport function parseNDigitsSigned(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, dateString);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, dateString);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, dateString);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, dateString);\n default:\n return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), dateString);\n }\n}\nexport function dayPeriodEnumToHours(dayPeriod) {\n switch (dayPeriod) {\n case 'morning':\n return 4;\n case 'evening':\n return 17;\n case 'pm':\n case 'noon':\n case 'afternoon':\n return 12;\n case 'am':\n case 'midnight':\n case 'night':\n default:\n return 0;\n }\n}\nexport function normalizeTwoDigitYear(twoDigitYear, currentYear) {\n var isCommonEra = currentYear > 0;\n // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n var result;\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n var rangeEnd = absCurrentYear + 50;\n var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n return isCommonEra ? result : 1 - result;\n}\nexport function isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.js\";\n// From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n// | Year | y | yy | yyy | yyyy | yyyyy |\n// |----------|-------|----|-------|-------|-------|\n// | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n// | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n// | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n// | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n// | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\nexport var YearParser = /*#__PURE__*/function (_Parser) {\n _inherits(YearParser, _Parser);\n var _super = _createSuper(YearParser);\n function YearParser() {\n var _this;\n _classCallCheck(this, YearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'u', 'w', 'I', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(YearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(year) {\n return {\n year: year,\n isTwoDigitYear: token === 'yy'\n };\n };\n switch (token) {\n case 'y':\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case 'yo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'year'\n }), valueCallback);\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n var currentYear = date.getUTCFullYear();\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return YearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits, normalizeTwoDigitYear, mapValue } from \"../utils.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\";\n// Local week-numbering year\nexport var LocalWeekYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalWeekYearParser, _Parser);\n var _super = _createSuper(LocalWeekYearParser);\n function LocalWeekYearParser() {\n var _this;\n _classCallCheck(this, LocalWeekYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'Q', 'q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']);\n return _this;\n }\n _createClass(LocalWeekYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(year) {\n return {\n year: year,\n isTwoDigitYear: token === 'YY'\n };\n };\n switch (token) {\n case 'Y':\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case 'Yo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'year'\n }), valueCallback);\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value, options) {\n var currentYear = getUTCWeekYear(date, options);\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n }]);\n return LocalWeekYearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigitsSigned } from \"../utils.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\"; // ISO week-numbering year\nexport var ISOWeekYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOWeekYearParser, _Parser);\n var _super = _createSuper(ISOWeekYearParser);\n function ISOWeekYearParser() {\n var _this;\n _classCallCheck(this, ISOWeekYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['G', 'y', 'Y', 'u', 'Q', 'q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ISOWeekYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n if (token === 'R') {\n return parseNDigitsSigned(4, dateString);\n }\n return parseNDigitsSigned(token.length, dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n var firstWeekOfYear = new Date(0);\n firstWeekOfYear.setUTCFullYear(value, 0, 4);\n firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n return startOfUTCISOWeek(firstWeekOfYear);\n }\n }]);\n return ISOWeekYearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigitsSigned } from \"../utils.js\";\nexport var ExtendedYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(ExtendedYearParser, _Parser);\n var _super = _createSuper(ExtendedYearParser);\n function ExtendedYearParser() {\n var _this;\n _classCallCheck(this, ExtendedYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['G', 'y', 'Y', 'R', 'w', 'I', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ExtendedYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n if (token === 'u') {\n return parseNDigitsSigned(4, dateString);\n }\n return parseNDigitsSigned(token.length, dateString);\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return ExtendedYearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits } from \"../utils.js\";\nexport var QuarterParser = /*#__PURE__*/function (_Parser) {\n _inherits(QuarterParser, _Parser);\n var _super = _createSuper(QuarterParser);\n function QuarterParser() {\n var _this;\n _classCallCheck(this, QuarterParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 120);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(QuarterParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n case 'QQ':\n // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return match.ordinalNumber(dateString, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return match.quarter(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return match.quarter(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return QuarterParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits } from \"../utils.js\";\nexport var StandAloneQuarterParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneQuarterParser, _Parser);\n var _super = _createSuper(StandAloneQuarterParser);\n function StandAloneQuarterParser() {\n var _this;\n _classCallCheck(this, StandAloneQuarterParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 120);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'Q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(StandAloneQuarterParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n case 'qq':\n // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return match.ordinalNumber(dateString, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return match.quarter(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return match.quarter(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return StandAloneQuarterParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { mapValue, parseNDigits, parseNumericPattern } from \"../utils.js\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nexport var MonthParser = /*#__PURE__*/function (_Parser) {\n _inherits(MonthParser, _Parser);\n var _super = _createSuper(MonthParser);\n function MonthParser() {\n var _this;\n _classCallCheck(this, MonthParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'L', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n _defineProperty(_assertThisInitialized(_this), \"priority\", 110);\n return _this;\n }\n _createClass(MonthParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n return value - 1;\n };\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n // 01, 02, ..., 12\n case 'MM':\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'month'\n }), valueCallback);\n // Jan, Feb, ..., Dec\n case 'MMM':\n return match.month(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return match.month(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return MonthParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits, mapValue } from \"../utils.js\";\nexport var StandAloneMonthParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneMonthParser, _Parser);\n var _super = _createSuper(StandAloneMonthParser);\n function StandAloneMonthParser() {\n var _this;\n _classCallCheck(this, StandAloneMonthParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 110);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'M', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(StandAloneMonthParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n return value - 1;\n };\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n // 01, 02, ..., 12\n case 'LL':\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'month'\n }), valueCallback);\n // Jan, Feb, ..., Dec\n case 'LLL':\n return match.month(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return match.month(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return StandAloneMonthParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nimport setUTCWeek from \"../../../_lib/setUTCWeek/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\"; // Local week of year\nexport var LocalWeekParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalWeekParser, _Parser);\n var _super = _createSuper(LocalWeekParser);\n function LocalWeekParser() {\n var _this;\n _classCallCheck(this, LocalWeekParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 100);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']);\n return _this;\n }\n _createClass(LocalWeekParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'w':\n return parseNumericPattern(numericPatterns.week, dateString);\n case 'wo':\n return match.ordinalNumber(dateString, {\n unit: 'week'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n return startOfUTCWeek(setUTCWeek(date, value, options), options);\n }\n }]);\n return LocalWeekParser;\n}(Parser);","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCWeek from \"../getUTCWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function setUTCWeek(dirtyDate, dirtyWeek, options) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var week = toInteger(dirtyWeek);\n var diff = getUTCWeek(date, options) - week;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nimport setUTCISOWeek from \"../../../_lib/setUTCISOWeek/index.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\"; // ISO week of year\nexport var ISOWeekParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOWeekParser, _Parser);\n var _super = _createSuper(ISOWeekParser);\n function ISOWeekParser() {\n var _this;\n _classCallCheck(this, ISOWeekParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 100);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ISOWeekParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'I':\n return parseNumericPattern(numericPatterns.week, dateString);\n case 'Io':\n return match.ordinalNumber(dateString, {\n unit: 'week'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n return startOfUTCISOWeek(setUTCISOWeek(date, value));\n }\n }]);\n return ISOWeekParser;\n}(Parser);","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCISOWeek from \"../getUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function setUTCISOWeek(dirtyDate, dirtyISOWeek) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var isoWeek = toInteger(dirtyISOWeek);\n var diff = getUTCISOWeek(date) - isoWeek;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { isLeapYearIndex, parseNDigits, parseNumericPattern } from \"../utils.js\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\n// Day of the month\nexport var DateParser = /*#__PURE__*/function (_Parser) {\n _inherits(DateParser, _Parser);\n var _super = _createSuper(DateParser);\n function DateParser() {\n var _this;\n _classCallCheck(this, DateParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"subPriority\", 1);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(DateParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'd':\n return parseNumericPattern(numericPatterns.date, dateString);\n case 'do':\n return match.ordinalNumber(dateString, {\n unit: 'date'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(date, value) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n var month = date.getUTCMonth();\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month];\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCDate(value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return DateParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits, isLeapYearIndex } from \"../utils.js\";\nexport var DayOfYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayOfYearParser, _Parser);\n var _super = _createSuper(DayOfYearParser);\n function DayOfYearParser() {\n var _this;\n _classCallCheck(this, DayOfYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"subpriority\", 1);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'M', 'L', 'w', 'I', 'd', 'E', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(DayOfYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'D':\n case 'DD':\n return parseNumericPattern(numericPatterns.dayOfYear, dateString);\n case 'Do':\n return match.ordinalNumber(dateString, {\n unit: 'date'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(date, value) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n if (isLeapYear) {\n return value >= 1 && value <= 366;\n } else {\n return value >= 1 && value <= 365;\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(0, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return DayOfYearParser;\n}(Parser);","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function setUTCDay(dirtyDate, dirtyDay, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(2, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = toInteger(dirtyDay);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Day of week\nexport var DayParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayParser, _Parser);\n var _super = _createSuper(DayParser);\n function DayParser() {\n var _this;\n _classCallCheck(this, DayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(DayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return DayParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Local day of week\nexport var LocalDayParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalDayParser, _Parser);\n var _super = _createSuper(LocalDayParser);\n function LocalDayParser() {\n var _this;\n _classCallCheck(this, LocalDayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'c', 't', 'T']);\n return _this;\n }\n _createClass(LocalDayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match, options) {\n var valueCallback = function valueCallback(value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n switch (token) {\n // 3\n case 'e':\n case 'ee':\n // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n case 'eo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'day'\n }), valueCallback);\n // Tue\n case 'eee':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return LocalDayParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Stand-alone local day of week\nexport var StandAloneLocalDayParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneLocalDayParser, _Parser);\n var _super = _createSuper(StandAloneLocalDayParser);\n function StandAloneLocalDayParser() {\n var _this;\n _classCallCheck(this, StandAloneLocalDayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'e', 't', 'T']);\n return _this;\n }\n _createClass(StandAloneLocalDayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match, options) {\n var valueCallback = function valueCallback(value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n switch (token) {\n // 3\n case 'c':\n case 'cc':\n // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n case 'co':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'day'\n }), valueCallback);\n // Tue\n case 'ccc':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return StandAloneLocalDayParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCISODay from \"../../../_lib/setUTCISODay/index.js\"; // ISO day of week\nexport var ISODayParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISODayParser, _Parser);\n var _super = _createSuper(ISODayParser);\n function ISODayParser() {\n var _this;\n _classCallCheck(this, ISODayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'E', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ISODayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n if (value === 0) {\n return 7;\n }\n return value;\n };\n switch (token) {\n // 2\n case 'i':\n case 'ii':\n // 02\n return parseNDigits(token.length, dateString);\n // 2nd\n case 'io':\n return match.ordinalNumber(dateString, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return mapValue(match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // T\n case 'iiiii':\n return mapValue(match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // Tu\n case 'iiiiii':\n return mapValue(match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // Tuesday\n case 'iiii':\n default:\n return mapValue(match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 7;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date = setUTCISODay(date, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return ISODayParser;\n}(Parser);","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nexport default function setUTCISODay(dirtyDate, dirtyDay) {\n requiredArgs(2, arguments);\n var day = toInteger(dirtyDay);\n if (day % 7 === 0) {\n day = day - 7;\n }\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\";\nexport var AMPMParser = /*#__PURE__*/function (_Parser) {\n _inherits(AMPMParser, _Parser);\n var _super = _createSuper(AMPMParser);\n function AMPMParser() {\n var _this;\n _classCallCheck(this, AMPMParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['b', 'B', 'H', 'k', 't', 'T']);\n return _this;\n }\n _createClass(AMPMParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaaa':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n return AMPMParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\";\nexport var AMPMMidnightParser = /*#__PURE__*/function (_Parser) {\n _inherits(AMPMMidnightParser, _Parser);\n var _super = _createSuper(AMPMMidnightParser);\n function AMPMMidnightParser() {\n var _this;\n _classCallCheck(this, AMPMMidnightParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'B', 'H', 'k', 't', 'T']);\n return _this;\n }\n _createClass(AMPMMidnightParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbbb':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n return AMPMMidnightParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\"; // in the morning, in the afternoon, in the evening, at night\nexport var DayPeriodParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayPeriodParser, _Parser);\n var _super = _createSuper(DayPeriodParser);\n function DayPeriodParser() {\n var _this;\n _classCallCheck(this, DayPeriodParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 't', 'T']);\n return _this;\n }\n _createClass(DayPeriodParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBBB':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n return DayPeriodParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour1to12Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour1to12Parser, _Parser);\n var _super = _createSuper(Hour1to12Parser);\n function Hour1to12Parser() {\n var _this;\n _classCallCheck(this, Hour1to12Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['H', 'K', 'k', 't', 'T']);\n return _this;\n }\n _createClass(Hour1to12Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'h':\n return parseNumericPattern(numericPatterns.hour12h, dateString);\n case 'ho':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 12;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var isPM = date.getUTCHours() >= 12;\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setUTCHours(0, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n return date;\n }\n }]);\n return Hour1to12Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour0to23Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour0to23Parser, _Parser);\n var _super = _createSuper(Hour0to23Parser);\n function Hour0to23Parser() {\n var _this;\n _classCallCheck(this, Hour0to23Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 'h', 'K', 'k', 't', 'T']);\n return _this;\n }\n _createClass(Hour0to23Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'H':\n return parseNumericPattern(numericPatterns.hour23h, dateString);\n case 'Ho':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 23;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(value, 0, 0, 0);\n return date;\n }\n }]);\n return Hour0to23Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour0To11Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour0To11Parser, _Parser);\n var _super = _createSuper(Hour0To11Parser);\n function Hour0To11Parser() {\n var _this;\n _classCallCheck(this, Hour0To11Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['h', 'H', 'k', 't', 'T']);\n return _this;\n }\n _createClass(Hour0To11Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'K':\n return parseNumericPattern(numericPatterns.hour11h, dateString);\n case 'Ko':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var isPM = date.getUTCHours() >= 12;\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n return date;\n }\n }]);\n return Hour0To11Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour1To24Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour1To24Parser, _Parser);\n var _super = _createSuper(Hour1To24Parser);\n function Hour1To24Parser() {\n var _this;\n _classCallCheck(this, Hour1To24Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 'h', 'H', 'K', 't', 'T']);\n return _this;\n }\n _createClass(Hour1To24Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'k':\n return parseNumericPattern(numericPatterns.hour24h, dateString);\n case 'ko':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 24;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var hours = value <= 24 ? value % 24 : value;\n date.setUTCHours(hours, 0, 0, 0);\n return date;\n }\n }]);\n return Hour1To24Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var MinuteParser = /*#__PURE__*/function (_Parser) {\n _inherits(MinuteParser, _Parser);\n var _super = _createSuper(MinuteParser);\n function MinuteParser() {\n var _this;\n _classCallCheck(this, MinuteParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 60);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n return _this;\n }\n _createClass(MinuteParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'm':\n return parseNumericPattern(numericPatterns.minute, dateString);\n case 'mo':\n return match.ordinalNumber(dateString, {\n unit: 'minute'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMinutes(value, 0, 0);\n return date;\n }\n }]);\n return MinuteParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var SecondParser = /*#__PURE__*/function (_Parser) {\n _inherits(SecondParser, _Parser);\n var _super = _createSuper(SecondParser);\n function SecondParser() {\n var _this;\n _classCallCheck(this, SecondParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 50);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n return _this;\n }\n _createClass(SecondParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 's':\n return parseNumericPattern(numericPatterns.second, dateString);\n case 'so':\n return match.ordinalNumber(dateString, {\n unit: 'second'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCSeconds(value, 0);\n return date;\n }\n }]);\n return SecondParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nexport var FractionOfSecondParser = /*#__PURE__*/function (_Parser) {\n _inherits(FractionOfSecondParser, _Parser);\n var _super = _createSuper(FractionOfSecondParser);\n function FractionOfSecondParser() {\n var _this;\n _classCallCheck(this, FractionOfSecondParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 30);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n return _this;\n }\n _createClass(FractionOfSecondParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n var valueCallback = function valueCallback(value) {\n return Math.floor(value * Math.pow(10, -token.length + 3));\n };\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMilliseconds(value);\n return date;\n }\n }]);\n return FractionOfSecondParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { parseTimezonePattern } from \"../utils.js\"; // Timezone (ISO-8601. +00:00 is `'Z'`)\nexport var ISOTimezoneWithZParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOTimezoneWithZParser, _Parser);\n var _super = _createSuper(ISOTimezoneWithZParser);\n function ISOTimezoneWithZParser() {\n var _this;\n _classCallCheck(this, ISOTimezoneWithZParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 10);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T', 'x']);\n return _this;\n }\n _createClass(ISOTimezoneWithZParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n switch (token) {\n case 'X':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, dateString);\n case 'XX':\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case 'XXXX':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n case 'XXXXX':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n case 'XXX':\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n if (flags.timestampIsSet) {\n return date;\n }\n return new Date(date.getTime() - value);\n }\n }]);\n return ISOTimezoneWithZParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { parseTimezonePattern } from \"../utils.js\"; // Timezone (ISO-8601)\nexport var ISOTimezoneParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOTimezoneParser, _Parser);\n var _super = _createSuper(ISOTimezoneParser);\n function ISOTimezoneParser() {\n var _this;\n _classCallCheck(this, ISOTimezoneParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 10);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T', 'X']);\n return _this;\n }\n _createClass(ISOTimezoneParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n switch (token) {\n case 'x':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, dateString);\n case 'xx':\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case 'xxxx':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n case 'xxxxx':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n case 'xxx':\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n if (flags.timestampIsSet) {\n return date;\n }\n return new Date(date.getTime() - value);\n }\n }]);\n return ISOTimezoneParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseAnyDigitsSigned } from \"../utils.js\";\nexport var TimestampSecondsParser = /*#__PURE__*/function (_Parser) {\n _inherits(TimestampSecondsParser, _Parser);\n var _super = _createSuper(TimestampSecondsParser);\n function TimestampSecondsParser() {\n var _this;\n _classCallCheck(this, TimestampSecondsParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 40);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", '*');\n return _this;\n }\n _createClass(TimestampSecondsParser, [{\n key: \"parse\",\n value: function parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n return [new Date(value * 1000), {\n timestampIsSet: true\n }];\n }\n }]);\n return TimestampSecondsParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseAnyDigitsSigned } from \"../utils.js\";\nexport var TimestampMillisecondsParser = /*#__PURE__*/function (_Parser) {\n _inherits(TimestampMillisecondsParser, _Parser);\n var _super = _createSuper(TimestampMillisecondsParser);\n function TimestampMillisecondsParser() {\n var _this;\n _classCallCheck(this, TimestampMillisecondsParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 20);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", '*');\n return _this;\n }\n _createClass(TimestampMillisecondsParser, [{\n key: \"parse\",\n value: function parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n return [new Date(value), {\n timestampIsSet: true\n }];\n }\n }]);\n return TimestampMillisecondsParser;\n}(Parser);","import { EraParser } from \"./EraParser.js\";\nimport { YearParser } from \"./YearParser.js\";\nimport { LocalWeekYearParser } from \"./LocalWeekYearParser.js\";\nimport { ISOWeekYearParser } from \"./ISOWeekYearParser.js\";\nimport { ExtendedYearParser } from \"./ExtendedYearParser.js\";\nimport { QuarterParser } from \"./QuarterParser.js\";\nimport { StandAloneQuarterParser } from \"./StandAloneQuarterParser.js\";\nimport { MonthParser } from \"./MonthParser.js\";\nimport { StandAloneMonthParser } from \"./StandAloneMonthParser.js\";\nimport { LocalWeekParser } from \"./LocalWeekParser.js\";\nimport { ISOWeekParser } from \"./ISOWeekParser.js\";\nimport { DateParser } from \"./DateParser.js\";\nimport { DayOfYearParser } from \"./DayOfYearParser.js\";\nimport { DayParser } from \"./DayParser.js\";\nimport { LocalDayParser } from \"./LocalDayParser.js\";\nimport { StandAloneLocalDayParser } from \"./StandAloneLocalDayParser.js\";\nimport { ISODayParser } from \"./ISODayParser.js\";\nimport { AMPMParser } from \"./AMPMParser.js\";\nimport { AMPMMidnightParser } from \"./AMPMMidnightParser.js\";\nimport { DayPeriodParser } from \"./DayPeriodParser.js\";\nimport { Hour1to12Parser } from \"./Hour1to12Parser.js\";\nimport { Hour0to23Parser } from \"./Hour0to23Parser.js\";\nimport { Hour0To11Parser } from \"./Hour0To11Parser.js\";\nimport { Hour1To24Parser } from \"./Hour1To24Parser.js\";\nimport { MinuteParser } from \"./MinuteParser.js\";\nimport { SecondParser } from \"./SecondParser.js\";\nimport { FractionOfSecondParser } from \"./FractionOfSecondParser.js\";\nimport { ISOTimezoneWithZParser } from \"./ISOTimezoneWithZParser.js\";\nimport { ISOTimezoneParser } from \"./ISOTimezoneParser.js\";\nimport { TimestampSecondsParser } from \"./TimestampSecondsParser.js\";\nimport { TimestampMillisecondsParser } from \"./TimestampMillisecondsParser.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\nexport var parsers = {\n G: new EraParser(),\n y: new YearParser(),\n Y: new LocalWeekYearParser(),\n R: new ISOWeekYearParser(),\n u: new ExtendedYearParser(),\n Q: new QuarterParser(),\n q: new StandAloneQuarterParser(),\n M: new MonthParser(),\n L: new StandAloneMonthParser(),\n w: new LocalWeekParser(),\n I: new ISOWeekParser(),\n d: new DateParser(),\n D: new DayOfYearParser(),\n E: new DayParser(),\n e: new LocalDayParser(),\n c: new StandAloneLocalDayParser(),\n i: new ISODayParser(),\n a: new AMPMParser(),\n b: new AMPMMidnightParser(),\n B: new DayPeriodParser(),\n h: new Hour1to12Parser(),\n H: new Hour0to23Parser(),\n K: new Hour0To11Parser(),\n k: new Hour1To24Parser(),\n m: new MinuteParser(),\n s: new SecondParser(),\n S: new FractionOfSecondParser(),\n X: new ISOTimezoneWithZParser(),\n x: new ISOTimezoneParser(),\n t: new TimestampSecondsParser(),\n T: new TimestampMillisecondsParser()\n};","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _createForOfIteratorHelper from \"@babel/runtime/helpers/esm/createForOfIteratorHelper\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport assign from \"../_lib/assign/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { DateToSystemTimezoneSetter } from \"./_lib/Setter.js\";\nimport { parsers } from \"./_lib/parsers/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar notWhitespaceRegExp = /\\S/;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 7 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Sun | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Long localized date | NA | P | 05/29/1453 | 5,8 |\n * | | | PP | May 29, 1453 | |\n * | | | PPP | May 29th, 1453 | |\n * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |\n * | Long localized time | NA | p | 12:00 AM | 5,8 |\n * | | | pp | 12:00:00 AM | |\n * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |\n * | | | PPpp | May 29, 1453, 12:00:00 AM | |\n * | | | PPPpp | May 29th, 1453 at ... | |\n * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n * on the given locale.\n *\n * using `en-US` locale: `P` => `MM/dd/yyyy`\n * using `en-US` locale: `p` => `hh:mm a`\n * using `pt-BR` locale: `P` => `dd/MM/yyyy`\n * using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|Number} referenceDate - defines values missing from the parsed dateString\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n * locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\nexport default function parse(dirtyDateString, dirtyFormatString, dirtyReferenceDate, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(3, arguments);\n var dateString = String(dirtyDateString);\n var formatString = String(dirtyFormatString);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n if (!locale.match) {\n throw new RangeError('locale must contain match property');\n }\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyReferenceDate);\n } else {\n return new Date(NaN);\n }\n }\n var subFnOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale\n };\n\n // If timezone isn't specified, it will be set to the system timezone\n var setters = [new DateToSystemTimezoneSetter()];\n var tokens = formatString.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter in longFormatters) {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp);\n var usedTokens = [];\n var _iterator = _createForOfIteratorHelper(tokens),\n _step;\n try {\n var _loop = function _loop() {\n var token = _step.value;\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n var firstCharacter = token[0];\n var parser = parsers[firstCharacter];\n if (parser) {\n var incompatibleTokens = parser.incompatibleTokens;\n if (Array.isArray(incompatibleTokens)) {\n var incompatibleToken = usedTokens.find(function (usedToken) {\n return incompatibleTokens.includes(usedToken.token) || usedToken.token === firstCharacter;\n });\n if (incompatibleToken) {\n throw new RangeError(\"The format string mustn't contain `\".concat(incompatibleToken.fullToken, \"` and `\").concat(token, \"` at the same time\"));\n }\n } else if (parser.incompatibleTokens === '*' && usedTokens.length > 0) {\n throw new RangeError(\"The format string mustn't contain `\".concat(token, \"` and any other token at the same time\"));\n }\n usedTokens.push({\n token: firstCharacter,\n fullToken: token\n });\n var parseResult = parser.run(dateString, token, locale.match, subFnOptions);\n if (!parseResult) {\n return {\n v: new Date(NaN)\n };\n }\n setters.push(parseResult.setter);\n dateString = parseResult.rest;\n } else {\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n // Replace two single quote characters with one single quote character\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token);\n }\n\n // Cut token from string, or, if string doesn't match the token, return Invalid Date\n if (dateString.indexOf(token) === 0) {\n dateString = dateString.slice(token.length);\n } else {\n return {\n v: new Date(NaN)\n };\n }\n }\n };\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _ret = _loop();\n if (_typeof(_ret) === \"object\") return _ret.v;\n }\n\n // Check if the remaining input contains something other than whitespace\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n return new Date(NaN);\n }\n var uniquePrioritySetters = setters.map(function (setter) {\n return setter.priority;\n }).sort(function (a, b) {\n return b - a;\n }).filter(function (priority, index, array) {\n return array.indexOf(priority) === index;\n }).map(function (priority) {\n return setters.filter(function (setter) {\n return setter.priority === priority;\n }).sort(function (a, b) {\n return b.subPriority - a.subPriority;\n });\n }).map(function (setterArray) {\n return setterArray[0];\n });\n var date = toDate(dirtyReferenceDate);\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n var flags = {};\n var _iterator2 = _createForOfIteratorHelper(uniquePrioritySetters),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var setter = _step2.value;\n if (!setter.validate(utcDate, subFnOptions)) {\n return new Date(NaN);\n }\n var result = setter.set(utcDate, flags, subFnOptions);\n // Result is tuple (date, flags)\n if (Array.isArray(result)) {\n utcDate = result[0];\n assign(flags, result[1]);\n // Result is date\n } else {\n utcDate = result;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return utcDate;\n}\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import endOfDay from \"../endOfDay/index.js\";\n/**\n * @name endOfToday\n * @category Day Helpers\n * @summary Return the end of today.\n * @pure false\n *\n * @description\n * Return the end of today.\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @returns {Date} the end of today\n *\n * @example\n * // If today is 6 October 2014:\n * const result = endOfToday()\n * //=> Mon Oct 6 2014 23:59:59.999\n */\nexport default function endOfToday() {\n return endOfDay(Date.now());\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDecade\n * @category Decade Helpers\n * @summary Return the start of a decade for the given date.\n *\n * @description\n * Return the start of a decade for the given date.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a decade\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a decade for 21 October 2015 00:00:00:\n * const result = startOfDecade(new Date(2015, 9, 21, 00, 00, 00))\n * //=> Jan 01 2010 00:00:00\n */\nexport default function startOfDecade(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var decade = Math.floor(year / 10) * 10;\n date.setFullYear(decade, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfDecade\n * @category Decade Helpers\n * @summary Return the end of a decade for the given date.\n *\n * @description\n * Return the end of a decade for the given date.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a decade\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The end of a decade for 12 May 1984 00:00:00:\n * const result = endOfDecade(new Date(1984, 4, 12, 00, 00, 00))\n * //=> Dec 31 1989 23:59:59.999\n */\nexport default function endOfDecade(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var decade = 9 + Math.floor(year / 10) * 10;\n date.setFullYear(decade, 11, 31);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Boolean} the dates are equal\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * const result = isEqual(\n * new Date(2014, 6, 2, 6, 30, 45, 0),\n * new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\nexport default function isEqual(dirtyLeftDate, dirtyRightDate) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyLeftDate);\n var dateRight = toDate(dirtyRightDate);\n return dateLeft.getTime() === dateRight.getTime();\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * const result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function subMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, -amount);\n}","import addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @description\n * Subtract the specified number of days from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the days subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nexport default function subDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addDays(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\nexport default function addWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n var days = amount * 7;\n return addDays(dirtyDate, days);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addWeeks from \"../addWeeks/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subWeeks\n * @category Week Helpers\n * @summary Subtract the specified number of weeks from the given date.\n *\n * @description\n * Subtract the specified number of weeks from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 4 weeks from 1 September 2014:\n * const result = subWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Aug 04 2014 00:00:00\n */\nexport default function subWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addWeeks(dirtyDate, -amount);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getTime\n * @category Timestamp Helpers\n * @summary Get the milliseconds timestamp of the given date.\n *\n * @description\n * Get the milliseconds timestamp of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05.123:\n * const result = getTime(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 1330515905123\n */\nexport default function getTime(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n return timestamp;\n}","import getTime from \"../getTime/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getUnixTime\n * @category Timestamp Helpers\n * @summary Get the seconds timestamp of the given date.\n *\n * @description\n * Get the seconds timestamp of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05 CET:\n * const result = getUnixTime(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 1330512305\n */\nexport default function getUnixTime(dirtyDate) {\n requiredArgs(1, arguments);\n return Math.floor(getTime(dirtyDate) / 1000);\n}","/**\n * Video accessibility util that will stop playing a video if the \"prefers-reduced-motion\" media feature evaluates to true.\n * Refer to https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-motion for more information.\n * @param videoElement\n */\nexport const applyReducedMotion = (videoElement?: HTMLVideoElement) => {\n if (!videoElement) return;\n if (window.matchMedia(\"(prefers-reduced-motion)\").matches) {\n videoElement.pause();\n videoElement.currentTime = 0;\n videoElement.removeAttribute(\"autoplay\");\n videoElement.removeAttribute(\"loop\");\n return;\n }\n};\n","import { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nexport function finalize(callback) {\n return (source) => source.lift(new FinallyOperator(callback));\n}\nclass FinallyOperator {\n constructor(callback) {\n this.callback = callback;\n }\n call(subscriber, source) {\n return source.subscribe(new FinallySubscriber(subscriber, this.callback));\n }\n}\nclass FinallySubscriber extends Subscriber {\n constructor(destination, callback) {\n super(destination);\n this.add(new Subscription(callback));\n }\n}\n","import { fromEvent } from \"rxjs\";\nimport { debounceTime, finalize, take } from \"rxjs/operators\";\n\n/**\n * Video util that will stop playing a video after specified number of times. This is useful for restricting playback of\n * autoplaying and looping background videos. Allowing indefinite looping will have implications for energy consumption,\n * as it might prevent screens from going to sleep.\n * @param videoElement\n * @param totalLoopCount\n */\nexport const limitVideoLoopCount = (videoElement?: HTMLVideoElement, totalLoopCount = 10) => {\n if (!videoElement) return;\n fromEvent(videoElement, \"seeked\")\n .pipe(\n debounceTime(500),\n take(totalLoopCount),\n finalize(() => {\n videoElement.pause();\n videoElement.currentTime = 0;\n videoElement.removeAttribute(\"loop\");\n })\n )\n .subscribe();\n};\n","/**\n * Converts an RGB color array to a hex color code.\n *\n * @param rgb An RGB color array.\n * @returns A hex color code.\n */\nexport function rgbToHex(rgb: number[]): string {\n return (\n \"#\" +\n rgb\n .map((value) => Math.max(0, Math.min(255, Math.round(value))))\n .map((value) => value.toString(16).padStart(2, \"0\"))\n .join(\"\")\n );\n}\n","/**\n * Converts a hex color code to an RGB color array.\n *\n * @param hex A 6 character hex color code e.g. #ffffff.\n * @returns An RGB color array.\n */\nexport function hexToRgb(hex: `#${string}`): number[] {\n if (hex.length !== 7)\n throw new TypeError(`'${hex}' code is not a valid hex code. Must be 6 characters and suffixed with '#' e.g. #ffffff.`);\n const hexCode = hex.slice(1);\n const red = parseInt(hexCode.substr(0, 2), 16);\n const green = parseInt(hexCode.substr(2, 2), 16);\n const blue = parseInt(hexCode.substr(4, 2), 16);\n\n return [red, green, blue];\n}\n","/**\n * Calculates the z-score normalization of an array of values\n * @param - The array of values to normalize\n * @returns An array of z-score normalized values where non-number entries are replaced with NaN\n */\nexport function getZScores(values: Array): Array {\n // Remove non-numbers from value list\n const numberValues = values.filter((value) => typeof value === \"number\") as Array;\n // Calculate the mean of the values array\n const meanValue = numberValues.reduce((sum, value) => sum + value, 0) / numberValues.length;\n // Calculate the standard deviation of the values array\n const standardDeviation = Math.sqrt(\n numberValues.reduce((varianceValue, value) => varianceValue + (value - meanValue) ** 2, 0) / numberValues.length\n );\n // Use the map method to iterate over the values array and calculate the z-score for each value\n return values.map((value) => (value == null || isNaN(value) ? NaN : (value - meanValue) / standardDeviation));\n}\n","/**\n * @license Angular v12.2.17\n * (c) 2010-2021 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { InjectionToken, ɵɵdefineInjectable, Injectable, ɵɵinject, Inject, Optional, EventEmitter, ɵfindLocaleData, ɵLocaleDataIndex, ɵgetLocaleCurrencyCode, ɵgetLocalePluralCase, LOCALE_ID, ɵregisterLocaleData, ɵisListLikeIterable, ɵstringify, Directive, IterableDiffers, KeyValueDiffers, ElementRef, Renderer2, Input, NgModuleRef, ComponentFactoryResolver, ViewContainerRef, TemplateRef, Host, ɵRuntimeError, Attribute, ɵisPromise, ɵisSubscribable, Pipe, ChangeDetectorRef, DEFAULT_CURRENCY_CODE, NgModule, Version } from '@angular/core';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport * as ɵngcc0 from '@angular/core';\nlet _DOM = null;\nfunction getDOM() {\n return _DOM;\n}\nfunction setDOM(adapter) {\n _DOM = adapter;\n}\nfunction setRootDomAdapter(adapter) {\n if (!_DOM) {\n _DOM = adapter;\n }\n}\n/* tslint:disable:requireParameterType */\n/**\n * Provides DOM operations in an environment-agnostic way.\n *\n * @security Tread carefully! Interacting with the DOM directly is dangerous and\n * can introduce XSS risks.\n */\nclass DomAdapter {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A DI Token representing the main rendering context. In a browser this is the DOM Document.\n *\n * Note: Document might not be available in the Application Context when Application and Rendering\n * Contexts are not the same (e.g. when running the application in a Web Worker).\n *\n * @publicApi\n */\nconst DOCUMENT = new InjectionToken('DocumentToken');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * This class should not be used directly by an application developer. Instead, use\n * {@link Location}.\n *\n * `PlatformLocation` encapsulates all calls to DOM APIs, which allows the Router to be\n * platform-agnostic.\n * This means that we can have different implementation of `PlatformLocation` for the different\n * platforms that Angular supports. For example, `@angular/platform-browser` provides an\n * implementation specific to the browser environment, while `@angular/platform-server` provides\n * one suitable for use with server-side rendering.\n *\n * The `PlatformLocation` class is used directly by all implementations of {@link LocationStrategy}\n * when they need to interact with the DOM APIs like pushState, popState, etc.\n *\n * {@link LocationStrategy} in turn is used by the {@link Location} service which is used directly\n * by the {@link Router} in order to navigate between routes. Since all interactions between {@link\n * Router} /\n * {@link Location} / {@link LocationStrategy} and DOM APIs flow through the `PlatformLocation`\n * class, they are all platform-agnostic.\n *\n * @publicApi\n */\nclass PlatformLocation {\n historyGo(relativePosition) {\n throw new Error('Not implemented');\n }\n}\nPlatformLocation.ɵfac = function PlatformLocation_Factory(t) { return new (t || PlatformLocation)(); };\nPlatformLocation.ɵprov = ɵɵdefineInjectable({ factory: useBrowserPlatformLocation, token: PlatformLocation, providedIn: \"platform\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PlatformLocation, [{\n type: Injectable,\n args: [{\n providedIn: 'platform',\n // See #23917\n useFactory: useBrowserPlatformLocation\n }]\n }], null, null); })();\nfunction useBrowserPlatformLocation() {\n return ɵɵinject(BrowserPlatformLocation);\n}\n/**\n * @description\n * Indicates when a location is initialized.\n *\n * @publicApi\n */\nconst LOCATION_INITIALIZED = new InjectionToken('Location Initialized');\n/**\n * `PlatformLocation` encapsulates all of the direct calls to platform APIs.\n * This class should not be used directly by an application developer. Instead, use\n * {@link Location}.\n */\nclass BrowserPlatformLocation extends PlatformLocation {\n constructor(_doc) {\n super();\n this._doc = _doc;\n this._init();\n }\n // This is moved to its own method so that `MockPlatformLocationStrategy` can overwrite it\n /** @internal */\n _init() {\n this.location = window.location;\n this._history = window.history;\n }\n getBaseHrefFromDOM() {\n return getDOM().getBaseHref(this._doc);\n }\n onPopState(fn) {\n const window = getDOM().getGlobalEventTarget(this._doc, 'window');\n window.addEventListener('popstate', fn, false);\n return () => window.removeEventListener('popstate', fn);\n }\n onHashChange(fn) {\n const window = getDOM().getGlobalEventTarget(this._doc, 'window');\n window.addEventListener('hashchange', fn, false);\n return () => window.removeEventListener('hashchange', fn);\n }\n get href() {\n return this.location.href;\n }\n get protocol() {\n return this.location.protocol;\n }\n get hostname() {\n return this.location.hostname;\n }\n get port() {\n return this.location.port;\n }\n get pathname() {\n return this.location.pathname;\n }\n get search() {\n return this.location.search;\n }\n get hash() {\n return this.location.hash;\n }\n set pathname(newPath) {\n this.location.pathname = newPath;\n }\n pushState(state, title, url) {\n if (supportsState()) {\n this._history.pushState(state, title, url);\n }\n else {\n this.location.hash = url;\n }\n }\n replaceState(state, title, url) {\n if (supportsState()) {\n this._history.replaceState(state, title, url);\n }\n else {\n this.location.hash = url;\n }\n }\n forward() {\n this._history.forward();\n }\n back() {\n this._history.back();\n }\n historyGo(relativePosition = 0) {\n this._history.go(relativePosition);\n }\n getState() {\n return this._history.state;\n }\n}\nBrowserPlatformLocation.ɵfac = function BrowserPlatformLocation_Factory(t) { return new (t || BrowserPlatformLocation)(ɵngcc0.ɵɵinject(DOCUMENT)); };\nBrowserPlatformLocation.ɵprov = ɵɵdefineInjectable({ factory: createBrowserPlatformLocation, token: BrowserPlatformLocation, providedIn: \"platform\" });\nBrowserPlatformLocation.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BrowserPlatformLocation, [{\n type: Injectable,\n args: [{\n providedIn: 'platform',\n // See #23917\n useFactory: createBrowserPlatformLocation\n }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, null); })();\nfunction supportsState() {\n return !!window.history.pushState;\n}\nfunction createBrowserPlatformLocation() {\n return new BrowserPlatformLocation(ɵɵinject(DOCUMENT));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Joins two parts of a URL with a slash if needed.\n *\n * @param start URL string\n * @param end URL string\n *\n *\n * @returns The joined URL string.\n */\nfunction joinWithSlash(start, end) {\n if (start.length == 0) {\n return end;\n }\n if (end.length == 0) {\n return start;\n }\n let slashes = 0;\n if (start.endsWith('/')) {\n slashes++;\n }\n if (end.startsWith('/')) {\n slashes++;\n }\n if (slashes == 2) {\n return start + end.substring(1);\n }\n if (slashes == 1) {\n return start + end;\n }\n return start + '/' + end;\n}\n/**\n * Removes a trailing slash from a URL string if needed.\n * Looks for the first occurrence of either `#`, `?`, or the end of the\n * line as `/` characters and removes the trailing slash if one exists.\n *\n * @param url URL string.\n *\n * @returns The URL string, modified if needed.\n */\nfunction stripTrailingSlash(url) {\n const match = url.match(/#|\\?|$/);\n const pathEndIdx = match && match.index || url.length;\n const droppedSlashIdx = pathEndIdx - (url[pathEndIdx - 1] === '/' ? 1 : 0);\n return url.slice(0, droppedSlashIdx) + url.slice(pathEndIdx);\n}\n/**\n * Normalizes URL parameters by prepending with `?` if needed.\n *\n * @param params String of URL parameters.\n *\n * @returns The normalized URL parameters string.\n */\nfunction normalizeQueryParams(params) {\n return params && params[0] !== '?' ? '?' + params : params;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Enables the `Location` service to read route state from the browser's URL.\n * Angular provides two strategies:\n * `HashLocationStrategy` and `PathLocationStrategy`.\n *\n * Applications should use the `Router` or `Location` services to\n * interact with application route state.\n *\n * For instance, `HashLocationStrategy` produces URLs like\n * http://example.com#/foo,\n * and `PathLocationStrategy` produces\n * http://example.com/foo as an equivalent URL.\n *\n * See these two classes for more.\n *\n * @publicApi\n */\nclass LocationStrategy {\n historyGo(relativePosition) {\n throw new Error('Not implemented');\n }\n}\nLocationStrategy.ɵfac = function LocationStrategy_Factory(t) { return new (t || LocationStrategy)(); };\nLocationStrategy.ɵprov = ɵɵdefineInjectable({ factory: provideLocationStrategy, token: LocationStrategy, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LocationStrategy, [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: provideLocationStrategy }]\n }], null, null); })();\nfunction provideLocationStrategy(platformLocation) {\n // See #23917\n const location = ɵɵinject(DOCUMENT).location;\n return new PathLocationStrategy(ɵɵinject(PlatformLocation), location && location.origin || '');\n}\n/**\n * A predefined [DI token](guide/glossary#di-token) for the base href\n * to be used with the `PathLocationStrategy`.\n * The base href is the URL prefix that should be preserved when generating\n * and recognizing URLs.\n *\n * @usageNotes\n *\n * The following example shows how to use this token to configure the root app injector\n * with a base href value, so that the DI framework can supply the dependency anywhere in the app.\n *\n * ```typescript\n * import {Component, NgModule} from '@angular/core';\n * import {APP_BASE_HREF} from '@angular/common';\n *\n * @NgModule({\n * providers: [{provide: APP_BASE_HREF, useValue: '/my/app'}]\n * })\n * class AppModule {}\n * ```\n *\n * @publicApi\n */\nconst APP_BASE_HREF = new InjectionToken('appBaseHref');\n/**\n * @description\n * A {@link LocationStrategy} used to configure the {@link Location} service to\n * represent its state in the\n * [path](https://en.wikipedia.org/wiki/Uniform_Resource_Locator#Syntax) of the\n * browser's URL.\n *\n * If you're using `PathLocationStrategy`, you must provide a {@link APP_BASE_HREF}\n * or add a `` element to the document.\n *\n * For instance, if you provide an `APP_BASE_HREF` of `'/my/app/'` and call\n * `location.go('/foo')`, the browser's URL will become\n * `example.com/my/app/foo`. To ensure all relative URIs resolve correctly,\n * the `` and/or `APP_BASE_HREF` should end with a `/`.\n *\n * Similarly, if you add `` to the document and call\n * `location.go('/foo')`, the browser's URL will become\n * `example.com/my/app/foo`.\n *\n * Note that when using `PathLocationStrategy`, neither the query nor\n * the fragment in the `` will be preserved, as outlined\n * by the [RFC](https://tools.ietf.org/html/rfc3986#section-5.2.2).\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/location/ts/path_location_component.ts region='LocationComponent'}\n *\n * @publicApi\n */\nclass PathLocationStrategy extends LocationStrategy {\n constructor(_platformLocation, href) {\n super();\n this._platformLocation = _platformLocation;\n this._removeListenerFns = [];\n if (href == null) {\n href = this._platformLocation.getBaseHrefFromDOM();\n }\n if (href == null) {\n throw new Error(`No base href set. Please provide a value for the APP_BASE_HREF token or add a base element to the document.`);\n }\n this._baseHref = href;\n }\n ngOnDestroy() {\n while (this._removeListenerFns.length) {\n this._removeListenerFns.pop()();\n }\n }\n onPopState(fn) {\n this._removeListenerFns.push(this._platformLocation.onPopState(fn), this._platformLocation.onHashChange(fn));\n }\n getBaseHref() {\n return this._baseHref;\n }\n prepareExternalUrl(internal) {\n return joinWithSlash(this._baseHref, internal);\n }\n path(includeHash = false) {\n const pathname = this._platformLocation.pathname + normalizeQueryParams(this._platformLocation.search);\n const hash = this._platformLocation.hash;\n return hash && includeHash ? `${pathname}${hash}` : pathname;\n }\n pushState(state, title, url, queryParams) {\n const externalUrl = this.prepareExternalUrl(url + normalizeQueryParams(queryParams));\n this._platformLocation.pushState(state, title, externalUrl);\n }\n replaceState(state, title, url, queryParams) {\n const externalUrl = this.prepareExternalUrl(url + normalizeQueryParams(queryParams));\n this._platformLocation.replaceState(state, title, externalUrl);\n }\n forward() {\n this._platformLocation.forward();\n }\n back() {\n this._platformLocation.back();\n }\n historyGo(relativePosition = 0) {\n var _a, _b;\n (_b = (_a = this._platformLocation).historyGo) === null || _b === void 0 ? void 0 : _b.call(_a, relativePosition);\n }\n}\nPathLocationStrategy.ɵfac = function PathLocationStrategy_Factory(t) { return new (t || PathLocationStrategy)(ɵngcc0.ɵɵinject(PlatformLocation), ɵngcc0.ɵɵinject(APP_BASE_HREF, 8)); };\nPathLocationStrategy.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: PathLocationStrategy, factory: PathLocationStrategy.ɵfac });\nPathLocationStrategy.ctorParameters = () => [\n { type: PlatformLocation },\n { type: String, decorators: [{ type: Optional }, { type: Inject, args: [APP_BASE_HREF,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PathLocationStrategy, [{\n type: Injectable\n }], function () { return [{ type: PlatformLocation }, { type: String, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [APP_BASE_HREF]\n }] }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @description\n * A {@link LocationStrategy} used to configure the {@link Location} service to\n * represent its state in the\n * [hash fragment](https://en.wikipedia.org/wiki/Uniform_Resource_Locator#Syntax)\n * of the browser's URL.\n *\n * For instance, if you call `location.go('/foo')`, the browser's URL will become\n * `example.com#/foo`.\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/location/ts/hash_location_component.ts region='LocationComponent'}\n *\n * @publicApi\n */\nclass HashLocationStrategy extends LocationStrategy {\n constructor(_platformLocation, _baseHref) {\n super();\n this._platformLocation = _platformLocation;\n this._baseHref = '';\n this._removeListenerFns = [];\n if (_baseHref != null) {\n this._baseHref = _baseHref;\n }\n }\n ngOnDestroy() {\n while (this._removeListenerFns.length) {\n this._removeListenerFns.pop()();\n }\n }\n onPopState(fn) {\n this._removeListenerFns.push(this._platformLocation.onPopState(fn), this._platformLocation.onHashChange(fn));\n }\n getBaseHref() {\n return this._baseHref;\n }\n path(includeHash = false) {\n // the hash value is always prefixed with a `#`\n // and if it is empty then it will stay empty\n let path = this._platformLocation.hash;\n if (path == null)\n path = '#';\n return path.length > 0 ? path.substring(1) : path;\n }\n prepareExternalUrl(internal) {\n const url = joinWithSlash(this._baseHref, internal);\n return url.length > 0 ? ('#' + url) : url;\n }\n pushState(state, title, path, queryParams) {\n let url = this.prepareExternalUrl(path + normalizeQueryParams(queryParams));\n if (url.length == 0) {\n url = this._platformLocation.pathname;\n }\n this._platformLocation.pushState(state, title, url);\n }\n replaceState(state, title, path, queryParams) {\n let url = this.prepareExternalUrl(path + normalizeQueryParams(queryParams));\n if (url.length == 0) {\n url = this._platformLocation.pathname;\n }\n this._platformLocation.replaceState(state, title, url);\n }\n forward() {\n this._platformLocation.forward();\n }\n back() {\n this._platformLocation.back();\n }\n historyGo(relativePosition = 0) {\n var _a, _b;\n (_b = (_a = this._platformLocation).historyGo) === null || _b === void 0 ? void 0 : _b.call(_a, relativePosition);\n }\n}\nHashLocationStrategy.ɵfac = function HashLocationStrategy_Factory(t) { return new (t || HashLocationStrategy)(ɵngcc0.ɵɵinject(PlatformLocation), ɵngcc0.ɵɵinject(APP_BASE_HREF, 8)); };\nHashLocationStrategy.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: HashLocationStrategy, factory: HashLocationStrategy.ɵfac });\nHashLocationStrategy.ctorParameters = () => [\n { type: PlatformLocation },\n { type: String, decorators: [{ type: Optional }, { type: Inject, args: [APP_BASE_HREF,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(HashLocationStrategy, [{\n type: Injectable\n }], function () { return [{ type: PlatformLocation }, { type: String, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [APP_BASE_HREF]\n }] }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @description\n *\n * A service that applications can use to interact with a browser's URL.\n *\n * Depending on the `LocationStrategy` used, `Location` persists\n * to the URL's path or the URL's hash segment.\n *\n * @usageNotes\n *\n * It's better to use the `Router.navigate()` service to trigger route changes. Use\n * `Location` only if you need to interact with or create normalized URLs outside of\n * routing.\n *\n * `Location` is responsible for normalizing the URL against the application's base href.\n * A normalized URL is absolute from the URL host, includes the application's base href, and has no\n * trailing slash:\n * - `/my/app/user/123` is normalized\n * - `my/app/user/123` **is not** normalized\n * - `/my/app/user/123/` **is not** normalized\n *\n * ### Example\n *\n * \n *\n * @publicApi\n */\nclass Location {\n constructor(platformStrategy, platformLocation) {\n /** @internal */\n this._subject = new EventEmitter();\n /** @internal */\n this._urlChangeListeners = [];\n this._platformStrategy = platformStrategy;\n const browserBaseHref = this._platformStrategy.getBaseHref();\n this._platformLocation = platformLocation;\n this._baseHref = stripTrailingSlash(_stripIndexHtml(browserBaseHref));\n this._platformStrategy.onPopState((ev) => {\n this._subject.emit({\n 'url': this.path(true),\n 'pop': true,\n 'state': ev.state,\n 'type': ev.type,\n });\n });\n }\n /**\n * Normalizes the URL path for this location.\n *\n * @param includeHash True to include an anchor fragment in the path.\n *\n * @returns The normalized URL path.\n */\n // TODO: vsavkin. Remove the boolean flag and always include hash once the deprecated router is\n // removed.\n path(includeHash = false) {\n return this.normalize(this._platformStrategy.path(includeHash));\n }\n /**\n * Reports the current state of the location history.\n * @returns The current value of the `history.state` object.\n */\n getState() {\n return this._platformLocation.getState();\n }\n /**\n * Normalizes the given path and compares to the current normalized path.\n *\n * @param path The given URL path.\n * @param query Query parameters.\n *\n * @returns True if the given URL path is equal to the current normalized path, false\n * otherwise.\n */\n isCurrentPathEqualTo(path, query = '') {\n return this.path() == this.normalize(path + normalizeQueryParams(query));\n }\n /**\n * Normalizes a URL path by stripping any trailing slashes.\n *\n * @param url String representing a URL.\n *\n * @returns The normalized URL string.\n */\n normalize(url) {\n return Location.stripTrailingSlash(_stripBaseHref(this._baseHref, _stripIndexHtml(url)));\n }\n /**\n * Normalizes an external URL path.\n * If the given URL doesn't begin with a leading slash (`'/'`), adds one\n * before normalizing. Adds a hash if `HashLocationStrategy` is\n * in use, or the `APP_BASE_HREF` if the `PathLocationStrategy` is in use.\n *\n * @param url String representing a URL.\n *\n * @returns A normalized platform-specific URL.\n */\n prepareExternalUrl(url) {\n if (url && url[0] !== '/') {\n url = '/' + url;\n }\n return this._platformStrategy.prepareExternalUrl(url);\n }\n // TODO: rename this method to pushState\n /**\n * Changes the browser's URL to a normalized version of a given URL, and pushes a\n * new item onto the platform's history.\n *\n * @param path URL path to normalize.\n * @param query Query parameters.\n * @param state Location history state.\n *\n */\n go(path, query = '', state = null) {\n this._platformStrategy.pushState(state, '', path, query);\n this._notifyUrlChangeListeners(this.prepareExternalUrl(path + normalizeQueryParams(query)), state);\n }\n /**\n * Changes the browser's URL to a normalized version of the given URL, and replaces\n * the top item on the platform's history stack.\n *\n * @param path URL path to normalize.\n * @param query Query parameters.\n * @param state Location history state.\n */\n replaceState(path, query = '', state = null) {\n this._platformStrategy.replaceState(state, '', path, query);\n this._notifyUrlChangeListeners(this.prepareExternalUrl(path + normalizeQueryParams(query)), state);\n }\n /**\n * Navigates forward in the platform's history.\n */\n forward() {\n this._platformStrategy.forward();\n }\n /**\n * Navigates back in the platform's history.\n */\n back() {\n this._platformStrategy.back();\n }\n /**\n * Navigate to a specific page from session history, identified by its relative position to the\n * current page.\n *\n * @param relativePosition Position of the target page in the history relative to the current\n * page.\n * A negative value moves backwards, a positive value moves forwards, e.g. `location.historyGo(2)`\n * moves forward two pages and `location.historyGo(-2)` moves back two pages. When we try to go\n * beyond what's stored in the history session, we stay in the current page. Same behaviour occurs\n * when `relativePosition` equals 0.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/History_API#Moving_to_a_specific_point_in_history\n */\n historyGo(relativePosition = 0) {\n var _a, _b;\n (_b = (_a = this._platformStrategy).historyGo) === null || _b === void 0 ? void 0 : _b.call(_a, relativePosition);\n }\n /**\n * Registers a URL change listener. Use to catch updates performed by the Angular\n * framework that are not detectible through \"popstate\" or \"hashchange\" events.\n *\n * @param fn The change handler function, which take a URL and a location history state.\n */\n onUrlChange(fn) {\n this._urlChangeListeners.push(fn);\n if (!this._urlChangeSubscription) {\n this._urlChangeSubscription = this.subscribe(v => {\n this._notifyUrlChangeListeners(v.url, v.state);\n });\n }\n }\n /** @internal */\n _notifyUrlChangeListeners(url = '', state) {\n this._urlChangeListeners.forEach(fn => fn(url, state));\n }\n /**\n * Subscribes to the platform's `popState` events.\n *\n * Note: `Location.go()` does not trigger the `popState` event in the browser. Use\n * `Location.onUrlChange()` to subscribe to URL changes instead.\n *\n * @param value Event that is triggered when the state history changes.\n * @param exception The exception to throw.\n *\n * @see [onpopstate](https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate)\n *\n * @returns Subscribed events.\n */\n subscribe(onNext, onThrow, onReturn) {\n return this._subject.subscribe({ next: onNext, error: onThrow, complete: onReturn });\n }\n}\nLocation.ɵfac = function Location_Factory(t) { return new (t || Location)(ɵngcc0.ɵɵinject(LocationStrategy), ɵngcc0.ɵɵinject(PlatformLocation)); };\n/**\n * Normalizes URL parameters by prepending with `?` if needed.\n *\n * @param params String of URL parameters.\n *\n * @returns The normalized URL parameters string.\n */\nLocation.normalizeQueryParams = normalizeQueryParams;\n/**\n * Joins two parts of a URL with a slash if needed.\n *\n * @param start URL string\n * @param end URL string\n *\n *\n * @returns The joined URL string.\n */\nLocation.joinWithSlash = joinWithSlash;\n/**\n * Removes a trailing slash from a URL string if needed.\n * Looks for the first occurrence of either `#`, `?`, or the end of the\n * line as `/` characters and removes the trailing slash if one exists.\n *\n * @param url URL string.\n *\n * @returns The URL string, modified if needed.\n */\nLocation.stripTrailingSlash = stripTrailingSlash;\nLocation.ɵprov = ɵɵdefineInjectable({ factory: createLocation, token: Location, providedIn: \"root\" });\nLocation.ctorParameters = () => [\n { type: LocationStrategy },\n { type: PlatformLocation }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(Location, [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n // See #23917\n useFactory: createLocation\n }]\n }], function () { return [{ type: LocationStrategy }, { type: PlatformLocation }]; }, null); })();\nfunction createLocation() {\n return new Location(ɵɵinject(LocationStrategy), ɵɵinject(PlatformLocation));\n}\nfunction _stripBaseHref(baseHref, url) {\n return baseHref && url.startsWith(baseHref) ? url.substring(baseHref.length) : url;\n}\nfunction _stripIndexHtml(url) {\n return url.replace(/\\/index.html$/, '');\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** @internal */\nconst CURRENCIES_EN = { \"ADP\": [undefined, undefined, 0], \"AFN\": [undefined, undefined, 0], \"ALL\": [undefined, undefined, 0], \"AMD\": [undefined, undefined, 2], \"AOA\": [undefined, \"Kz\"], \"ARS\": [undefined, \"$\"], \"AUD\": [\"A$\", \"$\"], \"BAM\": [undefined, \"KM\"], \"BBD\": [undefined, \"$\"], \"BDT\": [undefined, \"৳\"], \"BHD\": [undefined, undefined, 3], \"BIF\": [undefined, undefined, 0], \"BMD\": [undefined, \"$\"], \"BND\": [undefined, \"$\"], \"BOB\": [undefined, \"Bs\"], \"BRL\": [\"R$\"], \"BSD\": [undefined, \"$\"], \"BWP\": [undefined, \"P\"], \"BYN\": [undefined, \"р.\", 2], \"BYR\": [undefined, undefined, 0], \"BZD\": [undefined, \"$\"], \"CAD\": [\"CA$\", \"$\", 2], \"CHF\": [undefined, undefined, 2], \"CLF\": [undefined, undefined, 4], \"CLP\": [undefined, \"$\", 0], \"CNY\": [\"CN¥\", \"¥\"], \"COP\": [undefined, \"$\", 2], \"CRC\": [undefined, \"₡\", 2], \"CUC\": [undefined, \"$\"], \"CUP\": [undefined, \"$\"], \"CZK\": [undefined, \"Kč\", 2], \"DJF\": [undefined, undefined, 0], \"DKK\": [undefined, \"kr\", 2], \"DOP\": [undefined, \"$\"], \"EGP\": [undefined, \"E£\"], \"ESP\": [undefined, \"₧\", 0], \"EUR\": [\"€\"], \"FJD\": [undefined, \"$\"], \"FKP\": [undefined, \"£\"], \"GBP\": [\"£\"], \"GEL\": [undefined, \"₾\"], \"GIP\": [undefined, \"£\"], \"GNF\": [undefined, \"FG\", 0], \"GTQ\": [undefined, \"Q\"], \"GYD\": [undefined, \"$\", 2], \"HKD\": [\"HK$\", \"$\"], \"HNL\": [undefined, \"L\"], \"HRK\": [undefined, \"kn\"], \"HUF\": [undefined, \"Ft\", 2], \"IDR\": [undefined, \"Rp\", 2], \"ILS\": [\"₪\"], \"INR\": [\"₹\"], \"IQD\": [undefined, undefined, 0], \"IRR\": [undefined, undefined, 0], \"ISK\": [undefined, \"kr\", 0], \"ITL\": [undefined, undefined, 0], \"JMD\": [undefined, \"$\"], \"JOD\": [undefined, undefined, 3], \"JPY\": [\"¥\", undefined, 0], \"KHR\": [undefined, \"៛\"], \"KMF\": [undefined, \"CF\", 0], \"KPW\": [undefined, \"₩\", 0], \"KRW\": [\"₩\", undefined, 0], \"KWD\": [undefined, undefined, 3], \"KYD\": [undefined, \"$\"], \"KZT\": [undefined, \"₸\"], \"LAK\": [undefined, \"₭\", 0], \"LBP\": [undefined, \"L£\", 0], \"LKR\": [undefined, \"Rs\"], \"LRD\": [undefined, \"$\"], \"LTL\": [undefined, \"Lt\"], \"LUF\": [undefined, undefined, 0], \"LVL\": [undefined, \"Ls\"], \"LYD\": [undefined, undefined, 3], \"MGA\": [undefined, \"Ar\", 0], \"MGF\": [undefined, undefined, 0], \"MMK\": [undefined, \"K\", 0], \"MNT\": [undefined, \"₮\", 2], \"MRO\": [undefined, undefined, 0], \"MUR\": [undefined, \"Rs\", 2], \"MXN\": [\"MX$\", \"$\"], \"MYR\": [undefined, \"RM\"], \"NAD\": [undefined, \"$\"], \"NGN\": [undefined, \"₦\"], \"NIO\": [undefined, \"C$\"], \"NOK\": [undefined, \"kr\", 2], \"NPR\": [undefined, \"Rs\"], \"NZD\": [\"NZ$\", \"$\"], \"OMR\": [undefined, undefined, 3], \"PHP\": [undefined, \"₱\"], \"PKR\": [undefined, \"Rs\", 2], \"PLN\": [undefined, \"zł\"], \"PYG\": [undefined, \"₲\", 0], \"RON\": [undefined, \"lei\"], \"RSD\": [undefined, undefined, 0], \"RUB\": [undefined, \"₽\"], \"RUR\": [undefined, \"р.\"], \"RWF\": [undefined, \"RF\", 0], \"SBD\": [undefined, \"$\"], \"SEK\": [undefined, \"kr\", 2], \"SGD\": [undefined, \"$\"], \"SHP\": [undefined, \"£\"], \"SLL\": [undefined, undefined, 0], \"SOS\": [undefined, undefined, 0], \"SRD\": [undefined, \"$\"], \"SSP\": [undefined, \"£\"], \"STD\": [undefined, undefined, 0], \"STN\": [undefined, \"Db\"], \"SYP\": [undefined, \"£\", 0], \"THB\": [undefined, \"฿\"], \"TMM\": [undefined, undefined, 0], \"TND\": [undefined, undefined, 3], \"TOP\": [undefined, \"T$\"], \"TRL\": [undefined, undefined, 0], \"TRY\": [undefined, \"₺\"], \"TTD\": [undefined, \"$\"], \"TWD\": [\"NT$\", \"$\", 2], \"TZS\": [undefined, undefined, 2], \"UAH\": [undefined, \"₴\"], \"UGX\": [undefined, undefined, 0], \"USD\": [\"$\"], \"UYI\": [undefined, undefined, 0], \"UYU\": [undefined, \"$\"], \"UYW\": [undefined, undefined, 4], \"UZS\": [undefined, undefined, 2], \"VEF\": [undefined, \"Bs\", 2], \"VND\": [\"₫\", undefined, 0], \"VUV\": [undefined, undefined, 0], \"XAF\": [\"FCFA\", undefined, 0], \"XCD\": [\"EC$\", \"$\"], \"XOF\": [\"CFA\", undefined, 0], \"XPF\": [\"CFPF\", undefined, 0], \"XXX\": [\"¤\"], \"YER\": [undefined, undefined, 0], \"ZAR\": [undefined, \"R\"], \"ZMK\": [undefined, undefined, 0], \"ZMW\": [undefined, \"ZK\"], \"ZWD\": [undefined, undefined, 0] };\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Format styles that can be used to represent numbers.\n * @see `getLocaleNumberFormat()`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar NumberFormatStyle;\n(function (NumberFormatStyle) {\n NumberFormatStyle[NumberFormatStyle[\"Decimal\"] = 0] = \"Decimal\";\n NumberFormatStyle[NumberFormatStyle[\"Percent\"] = 1] = \"Percent\";\n NumberFormatStyle[NumberFormatStyle[\"Currency\"] = 2] = \"Currency\";\n NumberFormatStyle[NumberFormatStyle[\"Scientific\"] = 3] = \"Scientific\";\n})(NumberFormatStyle || (NumberFormatStyle = {}));\n/**\n * Plurality cases used for translating plurals to different languages.\n *\n * @see `NgPlural`\n * @see `NgPluralCase`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar Plural;\n(function (Plural) {\n Plural[Plural[\"Zero\"] = 0] = \"Zero\";\n Plural[Plural[\"One\"] = 1] = \"One\";\n Plural[Plural[\"Two\"] = 2] = \"Two\";\n Plural[Plural[\"Few\"] = 3] = \"Few\";\n Plural[Plural[\"Many\"] = 4] = \"Many\";\n Plural[Plural[\"Other\"] = 5] = \"Other\";\n})(Plural || (Plural = {}));\n/**\n * Context-dependant translation forms for strings.\n * Typically the standalone version is for the nominative form of the word,\n * and the format version is used for the genitive case.\n * @see [CLDR website](http://cldr.unicode.org/translation/date-time-1/date-time#TOC-Standalone-vs.-Format-Styles)\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar FormStyle;\n(function (FormStyle) {\n FormStyle[FormStyle[\"Format\"] = 0] = \"Format\";\n FormStyle[FormStyle[\"Standalone\"] = 1] = \"Standalone\";\n})(FormStyle || (FormStyle = {}));\n/**\n * String widths available for translations.\n * The specific character widths are locale-specific.\n * Examples are given for the word \"Sunday\" in English.\n *\n * @publicApi\n */\nvar TranslationWidth;\n(function (TranslationWidth) {\n /** 1 character for `en-US`. For example: 'S' */\n TranslationWidth[TranslationWidth[\"Narrow\"] = 0] = \"Narrow\";\n /** 3 characters for `en-US`. For example: 'Sun' */\n TranslationWidth[TranslationWidth[\"Abbreviated\"] = 1] = \"Abbreviated\";\n /** Full length for `en-US`. For example: \"Sunday\" */\n TranslationWidth[TranslationWidth[\"Wide\"] = 2] = \"Wide\";\n /** 2 characters for `en-US`, For example: \"Su\" */\n TranslationWidth[TranslationWidth[\"Short\"] = 3] = \"Short\";\n})(TranslationWidth || (TranslationWidth = {}));\n/**\n * String widths available for date-time formats.\n * The specific character widths are locale-specific.\n * Examples are given for `en-US`.\n *\n * @see `getLocaleDateFormat()`\n * @see `getLocaleTimeFormat()`\n * @see `getLocaleDateTimeFormat()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n * @publicApi\n */\nvar FormatWidth;\n(function (FormatWidth) {\n /**\n * For `en-US`, 'M/d/yy, h:mm a'`\n * (Example: `6/15/15, 9:03 AM`)\n */\n FormatWidth[FormatWidth[\"Short\"] = 0] = \"Short\";\n /**\n * For `en-US`, `'MMM d, y, h:mm:ss a'`\n * (Example: `Jun 15, 2015, 9:03:01 AM`)\n */\n FormatWidth[FormatWidth[\"Medium\"] = 1] = \"Medium\";\n /**\n * For `en-US`, `'MMMM d, y, h:mm:ss a z'`\n * (Example: `June 15, 2015 at 9:03:01 AM GMT+1`)\n */\n FormatWidth[FormatWidth[\"Long\"] = 2] = \"Long\";\n /**\n * For `en-US`, `'EEEE, MMMM d, y, h:mm:ss a zzzz'`\n * (Example: `Monday, June 15, 2015 at 9:03:01 AM GMT+01:00`)\n */\n FormatWidth[FormatWidth[\"Full\"] = 3] = \"Full\";\n})(FormatWidth || (FormatWidth = {}));\n/**\n * Symbols that can be used to replace placeholders in number patterns.\n * Examples are based on `en-US` values.\n *\n * @see `getLocaleNumberSymbol()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar NumberSymbol;\n(function (NumberSymbol) {\n /**\n * Decimal separator.\n * For `en-US`, the dot character.\n * Example: 2,345`.`67\n */\n NumberSymbol[NumberSymbol[\"Decimal\"] = 0] = \"Decimal\";\n /**\n * Grouping separator, typically for thousands.\n * For `en-US`, the comma character.\n * Example: 2`,`345.67\n */\n NumberSymbol[NumberSymbol[\"Group\"] = 1] = \"Group\";\n /**\n * List-item separator.\n * Example: \"one, two, and three\"\n */\n NumberSymbol[NumberSymbol[\"List\"] = 2] = \"List\";\n /**\n * Sign for percentage (out of 100).\n * Example: 23.4%\n */\n NumberSymbol[NumberSymbol[\"PercentSign\"] = 3] = \"PercentSign\";\n /**\n * Sign for positive numbers.\n * Example: +23\n */\n NumberSymbol[NumberSymbol[\"PlusSign\"] = 4] = \"PlusSign\";\n /**\n * Sign for negative numbers.\n * Example: -23\n */\n NumberSymbol[NumberSymbol[\"MinusSign\"] = 5] = \"MinusSign\";\n /**\n * Computer notation for exponential value (n times a power of 10).\n * Example: 1.2E3\n */\n NumberSymbol[NumberSymbol[\"Exponential\"] = 6] = \"Exponential\";\n /**\n * Human-readable format of exponential.\n * Example: 1.2x103\n */\n NumberSymbol[NumberSymbol[\"SuperscriptingExponent\"] = 7] = \"SuperscriptingExponent\";\n /**\n * Sign for permille (out of 1000).\n * Example: 23.4‰\n */\n NumberSymbol[NumberSymbol[\"PerMille\"] = 8] = \"PerMille\";\n /**\n * Infinity, can be used with plus and minus.\n * Example: ∞, +∞, -∞\n */\n NumberSymbol[NumberSymbol[\"Infinity\"] = 9] = \"Infinity\";\n /**\n * Not a number.\n * Example: NaN\n */\n NumberSymbol[NumberSymbol[\"NaN\"] = 10] = \"NaN\";\n /**\n * Symbol used between time units.\n * Example: 10:52\n */\n NumberSymbol[NumberSymbol[\"TimeSeparator\"] = 11] = \"TimeSeparator\";\n /**\n * Decimal separator for currency values (fallback to `Decimal`).\n * Example: $2,345.67\n */\n NumberSymbol[NumberSymbol[\"CurrencyDecimal\"] = 12] = \"CurrencyDecimal\";\n /**\n * Group separator for currency values (fallback to `Group`).\n * Example: $2,345.67\n */\n NumberSymbol[NumberSymbol[\"CurrencyGroup\"] = 13] = \"CurrencyGroup\";\n})(NumberSymbol || (NumberSymbol = {}));\n/**\n * The value for each day of the week, based on the `en-US` locale\n *\n * @publicApi\n */\nvar WeekDay;\n(function (WeekDay) {\n WeekDay[WeekDay[\"Sunday\"] = 0] = \"Sunday\";\n WeekDay[WeekDay[\"Monday\"] = 1] = \"Monday\";\n WeekDay[WeekDay[\"Tuesday\"] = 2] = \"Tuesday\";\n WeekDay[WeekDay[\"Wednesday\"] = 3] = \"Wednesday\";\n WeekDay[WeekDay[\"Thursday\"] = 4] = \"Thursday\";\n WeekDay[WeekDay[\"Friday\"] = 5] = \"Friday\";\n WeekDay[WeekDay[\"Saturday\"] = 6] = \"Saturday\";\n})(WeekDay || (WeekDay = {}));\n/**\n * Retrieves the locale ID from the currently loaded locale.\n * The loaded locale could be, for example, a global one rather than a regional one.\n * @param locale A locale code, such as `fr-FR`.\n * @returns The locale code. For example, `fr`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleId(locale) {\n return ɵfindLocaleData(locale)[ɵLocaleDataIndex.LocaleId];\n}\n/**\n * Retrieves day period strings for the given locale.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns An array of localized period strings. For example, `[AM, PM]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDayPeriods(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n const amPmData = [\n data[ɵLocaleDataIndex.DayPeriodsFormat], data[ɵLocaleDataIndex.DayPeriodsStandalone]\n ];\n const amPm = getLastDefinedValue(amPmData, formStyle);\n return getLastDefinedValue(amPm, width);\n}\n/**\n * Retrieves days of the week for the given locale, using the Gregorian calendar.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns An array of localized name strings.\n * For example,`[Sunday, Monday, ... Saturday]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDayNames(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n const daysData = [data[ɵLocaleDataIndex.DaysFormat], data[ɵLocaleDataIndex.DaysStandalone]];\n const days = getLastDefinedValue(daysData, formStyle);\n return getLastDefinedValue(days, width);\n}\n/**\n * Retrieves months of the year for the given locale, using the Gregorian calendar.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns An array of localized name strings.\n * For example, `[January, February, ...]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleMonthNames(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n const monthsData = [data[ɵLocaleDataIndex.MonthsFormat], data[ɵLocaleDataIndex.MonthsStandalone]];\n const months = getLastDefinedValue(monthsData, formStyle);\n return getLastDefinedValue(months, width);\n}\n/**\n * Retrieves Gregorian-calendar eras for the given locale.\n * @param locale A locale code for the locale format rules to use.\n * @param width The required character width.\n\n * @returns An array of localized era strings.\n * For example, `[AD, BC]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleEraNames(locale, width) {\n const data = ɵfindLocaleData(locale);\n const erasData = data[ɵLocaleDataIndex.Eras];\n return getLastDefinedValue(erasData, width);\n}\n/**\n * Retrieves the first day of the week for the given locale.\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns A day index number, using the 0-based week-day index for `en-US`\n * (Sunday = 0, Monday = 1, ...).\n * For example, for `fr-FR`, returns 1 to indicate that the first day is Monday.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleFirstDayOfWeek(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.FirstDayOfWeek];\n}\n/**\n * Range of week days that are considered the week-end for the given locale.\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns The range of day values, `[startDay, endDay]`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleWeekEndRange(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.WeekendRange];\n}\n/**\n * Retrieves a localized date-value formating string.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param width The format type.\n * @returns The localized formating string.\n * @see `FormatWidth`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDateFormat(locale, width) {\n const data = ɵfindLocaleData(locale);\n return getLastDefinedValue(data[ɵLocaleDataIndex.DateFormat], width);\n}\n/**\n * Retrieves a localized time-value formatting string.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param width The format type.\n * @returns The localized formatting string.\n * @see `FormatWidth`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n\n * @publicApi\n */\nfunction getLocaleTimeFormat(locale, width) {\n const data = ɵfindLocaleData(locale);\n return getLastDefinedValue(data[ɵLocaleDataIndex.TimeFormat], width);\n}\n/**\n * Retrieves a localized date-time formatting string.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param width The format type.\n * @returns The localized formatting string.\n * @see `FormatWidth`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDateTimeFormat(locale, width) {\n const data = ɵfindLocaleData(locale);\n const dateTimeFormatData = data[ɵLocaleDataIndex.DateTimeFormat];\n return getLastDefinedValue(dateTimeFormatData, width);\n}\n/**\n * Retrieves a localized number symbol that can be used to replace placeholders in number formats.\n * @param locale The locale code.\n * @param symbol The symbol to localize.\n * @returns The character for the localized symbol.\n * @see `NumberSymbol`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleNumberSymbol(locale, symbol) {\n const data = ɵfindLocaleData(locale);\n const res = data[ɵLocaleDataIndex.NumberSymbols][symbol];\n if (typeof res === 'undefined') {\n if (symbol === NumberSymbol.CurrencyDecimal) {\n return data[ɵLocaleDataIndex.NumberSymbols][NumberSymbol.Decimal];\n }\n else if (symbol === NumberSymbol.CurrencyGroup) {\n return data[ɵLocaleDataIndex.NumberSymbols][NumberSymbol.Group];\n }\n }\n return res;\n}\n/**\n * Retrieves a number format for a given locale.\n *\n * Numbers are formatted using patterns, like `#,###.00`. For example, the pattern `#,###.00`\n * when used to format the number 12345.678 could result in \"12'345,678\". That would happen if the\n * grouping separator for your language is an apostrophe, and the decimal separator is a comma.\n *\n * Important: The characters `.` `,` `0` `#` (and others below) are special placeholders\n * that stand for the decimal separator, and so on, and are NOT real characters.\n * You must NOT \"translate\" the placeholders. For example, don't change `.` to `,` even though in\n * your language the decimal point is written with a comma. The symbols should be replaced by the\n * local equivalents, using the appropriate `NumberSymbol` for your language.\n *\n * Here are the special characters used in number patterns:\n *\n * | Symbol | Meaning |\n * |--------|---------|\n * | . | Replaced automatically by the character used for the decimal point. |\n * | , | Replaced by the \"grouping\" (thousands) separator. |\n * | 0 | Replaced by a digit (or zero if there aren't enough digits). |\n * | # | Replaced by a digit (or nothing if there aren't enough). |\n * | ¤ | Replaced by a currency symbol, such as $ or USD. |\n * | % | Marks a percent format. The % symbol may change position, but must be retained. |\n * | E | Marks a scientific format. The E symbol may change position, but must be retained. |\n * | ' | Special characters used as literal characters are quoted with ASCII single quotes. |\n *\n * @param locale A locale code for the locale format rules to use.\n * @param type The type of numeric value to be formatted (such as `Decimal` or `Currency`.)\n * @returns The localized format string.\n * @see `NumberFormatStyle`\n * @see [CLDR website](http://cldr.unicode.org/translation/number-patterns)\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleNumberFormat(locale, type) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.NumberFormats][type];\n}\n/**\n * Retrieves the symbol used to represent the currency for the main country\n * corresponding to a given locale. For example, '$' for `en-US`.\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns The localized symbol character,\n * or `null` if the main country cannot be determined.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleCurrencySymbol(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.CurrencySymbol] || null;\n}\n/**\n * Retrieves the name of the currency for the main country corresponding\n * to a given locale. For example, 'US Dollar' for `en-US`.\n * @param locale A locale code for the locale format rules to use.\n * @returns The currency name,\n * or `null` if the main country cannot be determined.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleCurrencyName(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.CurrencyName] || null;\n}\n/**\n * Retrieves the default currency code for the given locale.\n *\n * The default is defined as the first currency which is still in use.\n *\n * @param locale The code of the locale whose currency code we want.\n * @returns The code of the default currency for the given locale.\n *\n * @publicApi\n */\nfunction getLocaleCurrencyCode(locale) {\n return ɵgetLocaleCurrencyCode(locale);\n}\n/**\n * Retrieves the currency values for a given locale.\n * @param locale A locale code for the locale format rules to use.\n * @returns The currency values.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n */\nfunction getLocaleCurrencies(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.Currencies];\n}\n/**\n * @alias core/ɵgetLocalePluralCase\n * @publicApi\n */\nconst getLocalePluralCase = ɵgetLocalePluralCase;\nfunction checkFullData(data) {\n if (!data[ɵLocaleDataIndex.ExtraData]) {\n throw new Error(`Missing extra locale data for the locale \"${data[ɵLocaleDataIndex\n .LocaleId]}\". Use \"registerLocaleData\" to load new data. See the \"I18n guide\" on angular.io to know more.`);\n }\n}\n/**\n * Retrieves locale-specific rules used to determine which day period to use\n * when more than one period is defined for a locale.\n *\n * There is a rule for each defined day period. The\n * first rule is applied to the first day period and so on.\n * Fall back to AM/PM when no rules are available.\n *\n * A rule can specify a period as time range, or as a single time value.\n *\n * This functionality is only available when you have loaded the full locale data.\n * See the [\"I18n guide\"](guide/i18n-common-format-data-locale).\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns The rules for the locale, a single time value or array of *from-time, to-time*,\n * or null if no periods are available.\n *\n * @see `getLocaleExtraDayPeriods()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleExtraDayPeriodRules(locale) {\n const data = ɵfindLocaleData(locale);\n checkFullData(data);\n const rules = data[ɵLocaleDataIndex.ExtraData][2 /* ExtraDayPeriodsRules */] || [];\n return rules.map((rule) => {\n if (typeof rule === 'string') {\n return extractTime(rule);\n }\n return [extractTime(rule[0]), extractTime(rule[1])];\n });\n}\n/**\n * Retrieves locale-specific day periods, which indicate roughly how a day is broken up\n * in different languages.\n * For example, for `en-US`, periods are morning, noon, afternoon, evening, and midnight.\n *\n * This functionality is only available when you have loaded the full locale data.\n * See the [\"I18n guide\"](guide/i18n-common-format-data-locale).\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns The translated day-period strings.\n * @see `getLocaleExtraDayPeriodRules()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleExtraDayPeriods(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n checkFullData(data);\n const dayPeriodsData = [\n data[ɵLocaleDataIndex.ExtraData][0 /* ExtraDayPeriodFormats */],\n data[ɵLocaleDataIndex.ExtraData][1 /* ExtraDayPeriodStandalone */]\n ];\n const dayPeriods = getLastDefinedValue(dayPeriodsData, formStyle) || [];\n return getLastDefinedValue(dayPeriods, width) || [];\n}\n/**\n * Retrieves the writing direction of a specified locale\n * @param locale A locale code for the locale format rules to use.\n * @publicApi\n * @returns 'rtl' or 'ltr'\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n */\nfunction getLocaleDirection(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.Directionality];\n}\n/**\n * Retrieves the first value that is defined in an array, going backwards from an index position.\n *\n * To avoid repeating the same data (as when the \"format\" and \"standalone\" forms are the same)\n * add the first value to the locale data arrays, and add other values only if they are different.\n *\n * @param data The data array to retrieve from.\n * @param index A 0-based index into the array to start from.\n * @returns The value immediately before the given index position.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLastDefinedValue(data, index) {\n for (let i = index; i > -1; i--) {\n if (typeof data[i] !== 'undefined') {\n return data[i];\n }\n }\n throw new Error('Locale data API: locale data undefined');\n}\n/**\n * Extracts the hours and minutes from a string like \"15:45\"\n */\nfunction extractTime(time) {\n const [h, m] = time.split(':');\n return { hours: +h, minutes: +m };\n}\n/**\n * Retrieves the currency symbol for a given currency code.\n *\n * For example, for the default `en-US` locale, the code `USD` can\n * be represented by the narrow symbol `$` or the wide symbol `US$`.\n *\n * @param code The currency code.\n * @param format The format, `wide` or `narrow`.\n * @param locale A locale code for the locale format rules to use.\n *\n * @returns The symbol, or the currency code if no symbol is available.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getCurrencySymbol(code, format, locale = 'en') {\n const currency = getLocaleCurrencies(locale)[code] || CURRENCIES_EN[code] || [];\n const symbolNarrow = currency[1 /* SymbolNarrow */];\n if (format === 'narrow' && typeof symbolNarrow === 'string') {\n return symbolNarrow;\n }\n return currency[0 /* Symbol */] || code;\n}\n// Most currencies have cents, that's why the default is 2\nconst DEFAULT_NB_OF_CURRENCY_DIGITS = 2;\n/**\n * Reports the number of decimal digits for a given currency.\n * The value depends upon the presence of cents in that particular currency.\n *\n * @param code The currency code.\n * @returns The number of decimal digits, typically 0 or 2.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getNumberOfCurrencyDigits(code) {\n let digits;\n const currency = CURRENCIES_EN[code];\n if (currency) {\n digits = currency[2 /* NbOfDigits */];\n }\n return typeof digits === 'number' ? digits : DEFAULT_NB_OF_CURRENCY_DIGITS;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst ISO8601_DATE_REGEX = /^(\\d{4})-?(\\d\\d)-?(\\d\\d)(?:T(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:\\.(\\d+))?)?)?(Z|([+-])(\\d\\d):?(\\d\\d))?)?$/;\n// 1 2 3 4 5 6 7 8 9 10 11\nconst NAMED_FORMATS = {};\nconst DATE_FORMATS_SPLIT = /((?:[^BEGHLMOSWYZabcdhmswyz']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|Y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|c{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\\s\\S]*)/;\nvar ZoneWidth;\n(function (ZoneWidth) {\n ZoneWidth[ZoneWidth[\"Short\"] = 0] = \"Short\";\n ZoneWidth[ZoneWidth[\"ShortGMT\"] = 1] = \"ShortGMT\";\n ZoneWidth[ZoneWidth[\"Long\"] = 2] = \"Long\";\n ZoneWidth[ZoneWidth[\"Extended\"] = 3] = \"Extended\";\n})(ZoneWidth || (ZoneWidth = {}));\nvar DateType;\n(function (DateType) {\n DateType[DateType[\"FullYear\"] = 0] = \"FullYear\";\n DateType[DateType[\"Month\"] = 1] = \"Month\";\n DateType[DateType[\"Date\"] = 2] = \"Date\";\n DateType[DateType[\"Hours\"] = 3] = \"Hours\";\n DateType[DateType[\"Minutes\"] = 4] = \"Minutes\";\n DateType[DateType[\"Seconds\"] = 5] = \"Seconds\";\n DateType[DateType[\"FractionalSeconds\"] = 6] = \"FractionalSeconds\";\n DateType[DateType[\"Day\"] = 7] = \"Day\";\n})(DateType || (DateType = {}));\nvar TranslationType;\n(function (TranslationType) {\n TranslationType[TranslationType[\"DayPeriods\"] = 0] = \"DayPeriods\";\n TranslationType[TranslationType[\"Days\"] = 1] = \"Days\";\n TranslationType[TranslationType[\"Months\"] = 2] = \"Months\";\n TranslationType[TranslationType[\"Eras\"] = 3] = \"Eras\";\n})(TranslationType || (TranslationType = {}));\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a date according to locale rules.\n *\n * @param value The date to format, as a Date, or a number (milliseconds since UTC epoch)\n * or an [ISO date-time string](https://www.w3.org/TR/NOTE-datetime).\n * @param format The date-time components to include. See `DatePipe` for details.\n * @param locale A locale code for the locale format rules to use.\n * @param timezone The time zone. A time zone offset from GMT (such as `'+0430'`),\n * or a standard UTC/GMT or continental US time zone abbreviation.\n * If not specified, uses host system settings.\n *\n * @returns The formatted date string.\n *\n * @see `DatePipe`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction formatDate(value, format, locale, timezone) {\n let date = toDate(value);\n const namedFormat = getNamedFormat(locale, format);\n format = namedFormat || format;\n let parts = [];\n let match;\n while (format) {\n match = DATE_FORMATS_SPLIT.exec(format);\n if (match) {\n parts = parts.concat(match.slice(1));\n const part = parts.pop();\n if (!part) {\n break;\n }\n format = part;\n }\n else {\n parts.push(format);\n break;\n }\n }\n let dateTimezoneOffset = date.getTimezoneOffset();\n if (timezone) {\n dateTimezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);\n date = convertTimezoneToLocal(date, timezone, true);\n }\n let text = '';\n parts.forEach(value => {\n const dateFormatter = getDateFormatter(value);\n text += dateFormatter ?\n dateFormatter(date, locale, dateTimezoneOffset) :\n value === '\\'\\'' ? '\\'' : value.replace(/(^'|'$)/g, '').replace(/''/g, '\\'');\n });\n return text;\n}\n/**\n * Create a new Date object with the given date value, and the time set to midnight.\n *\n * We cannot use `new Date(year, month, date)` because it maps years between 0 and 99 to 1900-1999.\n * See: https://github.com/angular/angular/issues/40377\n *\n * Note that this function returns a Date object whose time is midnight in the current locale's\n * timezone. In the future we might want to change this to be midnight in UTC, but this would be a\n * considerable breaking change.\n */\nfunction createDate(year, month, date) {\n // The `newDate` is set to midnight (UTC) on January 1st 1970.\n // - In PST this will be December 31st 1969 at 4pm.\n // - In GMT this will be January 1st 1970 at 1am.\n // Note that they even have different years, dates and months!\n const newDate = new Date(0);\n // `setFullYear()` allows years like 0001 to be set correctly. This function does not\n // change the internal time of the date.\n // Consider calling `setFullYear(2019, 8, 20)` (September 20, 2019).\n // - In PST this will now be September 20, 2019 at 4pm\n // - In GMT this will now be September 20, 2019 at 1am\n newDate.setFullYear(year, month, date);\n // We want the final date to be at local midnight, so we reset the time.\n // - In PST this will now be September 20, 2019 at 12am\n // - In GMT this will now be September 20, 2019 at 12am\n newDate.setHours(0, 0, 0);\n return newDate;\n}\nfunction getNamedFormat(locale, format) {\n const localeId = getLocaleId(locale);\n NAMED_FORMATS[localeId] = NAMED_FORMATS[localeId] || {};\n if (NAMED_FORMATS[localeId][format]) {\n return NAMED_FORMATS[localeId][format];\n }\n let formatValue = '';\n switch (format) {\n case 'shortDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Short);\n break;\n case 'mediumDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Medium);\n break;\n case 'longDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Long);\n break;\n case 'fullDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Full);\n break;\n case 'shortTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Short);\n break;\n case 'mediumTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Medium);\n break;\n case 'longTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Long);\n break;\n case 'fullTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Full);\n break;\n case 'short':\n const shortTime = getNamedFormat(locale, 'shortTime');\n const shortDate = getNamedFormat(locale, 'shortDate');\n formatValue = formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Short), [shortTime, shortDate]);\n break;\n case 'medium':\n const mediumTime = getNamedFormat(locale, 'mediumTime');\n const mediumDate = getNamedFormat(locale, 'mediumDate');\n formatValue = formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Medium), [mediumTime, mediumDate]);\n break;\n case 'long':\n const longTime = getNamedFormat(locale, 'longTime');\n const longDate = getNamedFormat(locale, 'longDate');\n formatValue =\n formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Long), [longTime, longDate]);\n break;\n case 'full':\n const fullTime = getNamedFormat(locale, 'fullTime');\n const fullDate = getNamedFormat(locale, 'fullDate');\n formatValue =\n formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Full), [fullTime, fullDate]);\n break;\n }\n if (formatValue) {\n NAMED_FORMATS[localeId][format] = formatValue;\n }\n return formatValue;\n}\nfunction formatDateTime(str, opt_values) {\n if (opt_values) {\n str = str.replace(/\\{([^}]+)}/g, function (match, key) {\n return (opt_values != null && key in opt_values) ? opt_values[key] : match;\n });\n }\n return str;\n}\nfunction padNumber(num, digits, minusSign = '-', trim, negWrap) {\n let neg = '';\n if (num < 0 || (negWrap && num <= 0)) {\n if (negWrap) {\n num = -num + 1;\n }\n else {\n num = -num;\n neg = minusSign;\n }\n }\n let strNum = String(num);\n while (strNum.length < digits) {\n strNum = '0' + strNum;\n }\n if (trim) {\n strNum = strNum.substr(strNum.length - digits);\n }\n return neg + strNum;\n}\nfunction formatFractionalSeconds(milliseconds, digits) {\n const strMs = padNumber(milliseconds, 3);\n return strMs.substr(0, digits);\n}\n/**\n * Returns a date formatter that transforms a date into its locale digit representation\n */\nfunction dateGetter(name, size, offset = 0, trim = false, negWrap = false) {\n return function (date, locale) {\n let part = getDatePart(name, date);\n if (offset > 0 || part > -offset) {\n part += offset;\n }\n if (name === DateType.Hours) {\n if (part === 0 && offset === -12) {\n part = 12;\n }\n }\n else if (name === DateType.FractionalSeconds) {\n return formatFractionalSeconds(part, size);\n }\n const localeMinus = getLocaleNumberSymbol(locale, NumberSymbol.MinusSign);\n return padNumber(part, size, localeMinus, trim, negWrap);\n };\n}\nfunction getDatePart(part, date) {\n switch (part) {\n case DateType.FullYear:\n return date.getFullYear();\n case DateType.Month:\n return date.getMonth();\n case DateType.Date:\n return date.getDate();\n case DateType.Hours:\n return date.getHours();\n case DateType.Minutes:\n return date.getMinutes();\n case DateType.Seconds:\n return date.getSeconds();\n case DateType.FractionalSeconds:\n return date.getMilliseconds();\n case DateType.Day:\n return date.getDay();\n default:\n throw new Error(`Unknown DateType value \"${part}\".`);\n }\n}\n/**\n * Returns a date formatter that transforms a date into its locale string representation\n */\nfunction dateStrGetter(name, width, form = FormStyle.Format, extended = false) {\n return function (date, locale) {\n return getDateTranslation(date, locale, name, width, form, extended);\n };\n}\n/**\n * Returns the locale translation of a date for a given form, type and width\n */\nfunction getDateTranslation(date, locale, name, width, form, extended) {\n switch (name) {\n case TranslationType.Months:\n return getLocaleMonthNames(locale, form, width)[date.getMonth()];\n case TranslationType.Days:\n return getLocaleDayNames(locale, form, width)[date.getDay()];\n case TranslationType.DayPeriods:\n const currentHours = date.getHours();\n const currentMinutes = date.getMinutes();\n if (extended) {\n const rules = getLocaleExtraDayPeriodRules(locale);\n const dayPeriods = getLocaleExtraDayPeriods(locale, form, width);\n const index = rules.findIndex(rule => {\n if (Array.isArray(rule)) {\n // morning, afternoon, evening, night\n const [from, to] = rule;\n const afterFrom = currentHours >= from.hours && currentMinutes >= from.minutes;\n const beforeTo = (currentHours < to.hours ||\n (currentHours === to.hours && currentMinutes < to.minutes));\n // We must account for normal rules that span a period during the day (e.g. 6am-9am)\n // where `from` is less (earlier) than `to`. But also rules that span midnight (e.g.\n // 10pm - 5am) where `from` is greater (later!) than `to`.\n //\n // In the first case the current time must be BOTH after `from` AND before `to`\n // (e.g. 8am is after 6am AND before 10am).\n //\n // In the second case the current time must be EITHER after `from` OR before `to`\n // (e.g. 4am is before 5am but not after 10pm; and 11pm is not before 5am but it is\n // after 10pm).\n if (from.hours < to.hours) {\n if (afterFrom && beforeTo) {\n return true;\n }\n }\n else if (afterFrom || beforeTo) {\n return true;\n }\n }\n else { // noon or midnight\n if (rule.hours === currentHours && rule.minutes === currentMinutes) {\n return true;\n }\n }\n return false;\n });\n if (index !== -1) {\n return dayPeriods[index];\n }\n }\n // if no rules for the day periods, we use am/pm by default\n return getLocaleDayPeriods(locale, form, width)[currentHours < 12 ? 0 : 1];\n case TranslationType.Eras:\n return getLocaleEraNames(locale, width)[date.getFullYear() <= 0 ? 0 : 1];\n default:\n // This default case is not needed by TypeScript compiler, as the switch is exhaustive.\n // However Closure Compiler does not understand that and reports an error in typed mode.\n // The `throw new Error` below works around the problem, and the unexpected: never variable\n // makes sure tsc still checks this code is unreachable.\n const unexpected = name;\n throw new Error(`unexpected translation type ${unexpected}`);\n }\n}\n/**\n * Returns a date formatter that transforms a date and an offset into a timezone with ISO8601 or\n * GMT format depending on the width (eg: short = +0430, short:GMT = GMT+4, long = GMT+04:30,\n * extended = +04:30)\n */\nfunction timeZoneGetter(width) {\n return function (date, locale, offset) {\n const zone = -1 * offset;\n const minusSign = getLocaleNumberSymbol(locale, NumberSymbol.MinusSign);\n const hours = zone > 0 ? Math.floor(zone / 60) : Math.ceil(zone / 60);\n switch (width) {\n case ZoneWidth.Short:\n return ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) +\n padNumber(Math.abs(zone % 60), 2, minusSign);\n case ZoneWidth.ShortGMT:\n return 'GMT' + ((zone >= 0) ? '+' : '') + padNumber(hours, 1, minusSign);\n case ZoneWidth.Long:\n return 'GMT' + ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) + ':' +\n padNumber(Math.abs(zone % 60), 2, minusSign);\n case ZoneWidth.Extended:\n if (offset === 0) {\n return 'Z';\n }\n else {\n return ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) + ':' +\n padNumber(Math.abs(zone % 60), 2, minusSign);\n }\n default:\n throw new Error(`Unknown zone width \"${width}\"`);\n }\n };\n}\nconst JANUARY = 0;\nconst THURSDAY = 4;\nfunction getFirstThursdayOfYear(year) {\n const firstDayOfYear = createDate(year, JANUARY, 1).getDay();\n return createDate(year, 0, 1 + ((firstDayOfYear <= THURSDAY) ? THURSDAY : THURSDAY + 7) - firstDayOfYear);\n}\nfunction getThursdayThisWeek(datetime) {\n return createDate(datetime.getFullYear(), datetime.getMonth(), datetime.getDate() + (THURSDAY - datetime.getDay()));\n}\nfunction weekGetter(size, monthBased = false) {\n return function (date, locale) {\n let result;\n if (monthBased) {\n const nbDaysBefore1stDayOfMonth = new Date(date.getFullYear(), date.getMonth(), 1).getDay() - 1;\n const today = date.getDate();\n result = 1 + Math.floor((today + nbDaysBefore1stDayOfMonth) / 7);\n }\n else {\n const thisThurs = getThursdayThisWeek(date);\n // Some days of a year are part of next year according to ISO 8601.\n // Compute the firstThurs from the year of this week's Thursday\n const firstThurs = getFirstThursdayOfYear(thisThurs.getFullYear());\n const diff = thisThurs.getTime() - firstThurs.getTime();\n result = 1 + Math.round(diff / 6.048e8); // 6.048e8 ms per week\n }\n return padNumber(result, size, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n };\n}\n/**\n * Returns a date formatter that provides the week-numbering year for the input date.\n */\nfunction weekNumberingYearGetter(size, trim = false) {\n return function (date, locale) {\n const thisThurs = getThursdayThisWeek(date);\n const weekNumberingYear = thisThurs.getFullYear();\n return padNumber(weekNumberingYear, size, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign), trim);\n };\n}\nconst DATE_FORMATS = {};\n// Based on CLDR formats:\n// See complete list: http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n// See also explanations: http://cldr.unicode.org/translation/date-time\n// TODO(ocombe): support all missing cldr formats: U, Q, D, F, e, j, J, C, A, v, V, X, x\nfunction getDateFormatter(format) {\n if (DATE_FORMATS[format]) {\n return DATE_FORMATS[format];\n }\n let formatter;\n switch (format) {\n // Era name (AD/BC)\n case 'G':\n case 'GG':\n case 'GGG':\n formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Abbreviated);\n break;\n case 'GGGG':\n formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Wide);\n break;\n case 'GGGGG':\n formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Narrow);\n break;\n // 1 digit representation of the year, e.g. (AD 1 => 1, AD 199 => 199)\n case 'y':\n formatter = dateGetter(DateType.FullYear, 1, 0, false, true);\n break;\n // 2 digit representation of the year, padded (00-99). (e.g. AD 2001 => 01, AD 2010 => 10)\n case 'yy':\n formatter = dateGetter(DateType.FullYear, 2, 0, true, true);\n break;\n // 3 digit representation of the year, padded (000-999). (e.g. AD 2001 => 01, AD 2010 => 10)\n case 'yyy':\n formatter = dateGetter(DateType.FullYear, 3, 0, false, true);\n break;\n // 4 digit representation of the year (e.g. AD 1 => 0001, AD 2010 => 2010)\n case 'yyyy':\n formatter = dateGetter(DateType.FullYear, 4, 0, false, true);\n break;\n // 1 digit representation of the week-numbering year, e.g. (AD 1 => 1, AD 199 => 199)\n case 'Y':\n formatter = weekNumberingYearGetter(1);\n break;\n // 2 digit representation of the week-numbering year, padded (00-99). (e.g. AD 2001 => 01, AD\n // 2010 => 10)\n case 'YY':\n formatter = weekNumberingYearGetter(2, true);\n break;\n // 3 digit representation of the week-numbering year, padded (000-999). (e.g. AD 1 => 001, AD\n // 2010 => 2010)\n case 'YYY':\n formatter = weekNumberingYearGetter(3);\n break;\n // 4 digit representation of the week-numbering year (e.g. AD 1 => 0001, AD 2010 => 2010)\n case 'YYYY':\n formatter = weekNumberingYearGetter(4);\n break;\n // Month of the year (1-12), numeric\n case 'M':\n case 'L':\n formatter = dateGetter(DateType.Month, 1, 1);\n break;\n case 'MM':\n case 'LL':\n formatter = dateGetter(DateType.Month, 2, 1);\n break;\n // Month of the year (January, ...), string, format\n case 'MMM':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Abbreviated);\n break;\n case 'MMMM':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Wide);\n break;\n case 'MMMMM':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Narrow);\n break;\n // Month of the year (January, ...), string, standalone\n case 'LLL':\n formatter =\n dateStrGetter(TranslationType.Months, TranslationWidth.Abbreviated, FormStyle.Standalone);\n break;\n case 'LLLL':\n formatter =\n dateStrGetter(TranslationType.Months, TranslationWidth.Wide, FormStyle.Standalone);\n break;\n case 'LLLLL':\n formatter =\n dateStrGetter(TranslationType.Months, TranslationWidth.Narrow, FormStyle.Standalone);\n break;\n // Week of the year (1, ... 52)\n case 'w':\n formatter = weekGetter(1);\n break;\n case 'ww':\n formatter = weekGetter(2);\n break;\n // Week of the month (1, ...)\n case 'W':\n formatter = weekGetter(1, true);\n break;\n // Day of the month (1-31)\n case 'd':\n formatter = dateGetter(DateType.Date, 1);\n break;\n case 'dd':\n formatter = dateGetter(DateType.Date, 2);\n break;\n // Day of the Week StandAlone (1, 1, Mon, Monday, M, Mo)\n case 'c':\n case 'cc':\n formatter = dateGetter(DateType.Day, 1);\n break;\n case 'ccc':\n formatter =\n dateStrGetter(TranslationType.Days, TranslationWidth.Abbreviated, FormStyle.Standalone);\n break;\n case 'cccc':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Wide, FormStyle.Standalone);\n break;\n case 'ccccc':\n formatter =\n dateStrGetter(TranslationType.Days, TranslationWidth.Narrow, FormStyle.Standalone);\n break;\n case 'cccccc':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Short, FormStyle.Standalone);\n break;\n // Day of the Week\n case 'E':\n case 'EE':\n case 'EEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Abbreviated);\n break;\n case 'EEEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Wide);\n break;\n case 'EEEEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Narrow);\n break;\n case 'EEEEEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Short);\n break;\n // Generic period of the day (am-pm)\n case 'a':\n case 'aa':\n case 'aaa':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated);\n break;\n case 'aaaa':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide);\n break;\n case 'aaaaa':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow);\n break;\n // Extended period of the day (midnight, at night, ...), standalone\n case 'b':\n case 'bb':\n case 'bbb':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated, FormStyle.Standalone, true);\n break;\n case 'bbbb':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide, FormStyle.Standalone, true);\n break;\n case 'bbbbb':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow, FormStyle.Standalone, true);\n break;\n // Extended period of the day (midnight, night, ...), standalone\n case 'B':\n case 'BB':\n case 'BBB':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated, FormStyle.Format, true);\n break;\n case 'BBBB':\n formatter =\n dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide, FormStyle.Format, true);\n break;\n case 'BBBBB':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow, FormStyle.Format, true);\n break;\n // Hour in AM/PM, (1-12)\n case 'h':\n formatter = dateGetter(DateType.Hours, 1, -12);\n break;\n case 'hh':\n formatter = dateGetter(DateType.Hours, 2, -12);\n break;\n // Hour of the day (0-23)\n case 'H':\n formatter = dateGetter(DateType.Hours, 1);\n break;\n // Hour in day, padded (00-23)\n case 'HH':\n formatter = dateGetter(DateType.Hours, 2);\n break;\n // Minute of the hour (0-59)\n case 'm':\n formatter = dateGetter(DateType.Minutes, 1);\n break;\n case 'mm':\n formatter = dateGetter(DateType.Minutes, 2);\n break;\n // Second of the minute (0-59)\n case 's':\n formatter = dateGetter(DateType.Seconds, 1);\n break;\n case 'ss':\n formatter = dateGetter(DateType.Seconds, 2);\n break;\n // Fractional second\n case 'S':\n formatter = dateGetter(DateType.FractionalSeconds, 1);\n break;\n case 'SS':\n formatter = dateGetter(DateType.FractionalSeconds, 2);\n break;\n case 'SSS':\n formatter = dateGetter(DateType.FractionalSeconds, 3);\n break;\n // Timezone ISO8601 short format (-0430)\n case 'Z':\n case 'ZZ':\n case 'ZZZ':\n formatter = timeZoneGetter(ZoneWidth.Short);\n break;\n // Timezone ISO8601 extended format (-04:30)\n case 'ZZZZZ':\n formatter = timeZoneGetter(ZoneWidth.Extended);\n break;\n // Timezone GMT short format (GMT+4)\n case 'O':\n case 'OO':\n case 'OOO':\n // Should be location, but fallback to format O instead because we don't have the data yet\n case 'z':\n case 'zz':\n case 'zzz':\n formatter = timeZoneGetter(ZoneWidth.ShortGMT);\n break;\n // Timezone GMT long format (GMT+0430)\n case 'OOOO':\n case 'ZZZZ':\n // Should be location, but fallback to format O instead because we don't have the data yet\n case 'zzzz':\n formatter = timeZoneGetter(ZoneWidth.Long);\n break;\n default:\n return null;\n }\n DATE_FORMATS[format] = formatter;\n return formatter;\n}\nfunction timezoneToOffset(timezone, fallback) {\n // Support: IE 11 only, Edge 13-15+\n // IE/Edge do not \"understand\" colon (`:`) in timezone\n timezone = timezone.replace(/:/g, '');\n const requestedTimezoneOffset = Date.parse('Jan 01, 1970 00:00:00 ' + timezone) / 60000;\n return isNaN(requestedTimezoneOffset) ? fallback : requestedTimezoneOffset;\n}\nfunction addDateMinutes(date, minutes) {\n date = new Date(date.getTime());\n date.setMinutes(date.getMinutes() + minutes);\n return date;\n}\nfunction convertTimezoneToLocal(date, timezone, reverse) {\n const reverseValue = reverse ? -1 : 1;\n const dateTimezoneOffset = date.getTimezoneOffset();\n const timezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);\n return addDateMinutes(date, reverseValue * (timezoneOffset - dateTimezoneOffset));\n}\n/**\n * Converts a value to date.\n *\n * Supported input formats:\n * - `Date`\n * - number: timestamp\n * - string: numeric (e.g. \"1234\"), ISO and date strings in a format supported by\n * [Date.parse()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse).\n * Note: ISO strings without time return a date without timeoffset.\n *\n * Throws if unable to convert to a date.\n */\nfunction toDate(value) {\n if (isDate(value)) {\n return value;\n }\n if (typeof value === 'number' && !isNaN(value)) {\n return new Date(value);\n }\n if (typeof value === 'string') {\n value = value.trim();\n if (/^(\\d{4}(-\\d{1,2}(-\\d{1,2})?)?)$/.test(value)) {\n /* For ISO Strings without time the day, month and year must be extracted from the ISO String\n before Date creation to avoid time offset and errors in the new Date.\n If we only replace '-' with ',' in the ISO String (\"2015,01,01\"), and try to create a new\n date, some browsers (e.g. IE 9) will throw an invalid Date error.\n If we leave the '-' (\"2015-01-01\") and try to create a new Date(\"2015-01-01\") the timeoffset\n is applied.\n Note: ISO months are 0 for January, 1 for February, ... */\n const [y, m = 1, d = 1] = value.split('-').map((val) => +val);\n return createDate(y, m - 1, d);\n }\n const parsedNb = parseFloat(value);\n // any string that only contains numbers, like \"1234\" but not like \"1234hello\"\n if (!isNaN(value - parsedNb)) {\n return new Date(parsedNb);\n }\n let match;\n if (match = value.match(ISO8601_DATE_REGEX)) {\n return isoStringToDate(match);\n }\n }\n const date = new Date(value);\n if (!isDate(date)) {\n throw new Error(`Unable to convert \"${value}\" into a date`);\n }\n return date;\n}\n/**\n * Converts a date in ISO8601 to a Date.\n * Used instead of `Date.parse` because of browser discrepancies.\n */\nfunction isoStringToDate(match) {\n const date = new Date(0);\n let tzHour = 0;\n let tzMin = 0;\n // match[8] means that the string contains \"Z\" (UTC) or a timezone like \"+01:00\" or \"+0100\"\n const dateSetter = match[8] ? date.setUTCFullYear : date.setFullYear;\n const timeSetter = match[8] ? date.setUTCHours : date.setHours;\n // if there is a timezone defined like \"+01:00\" or \"+0100\"\n if (match[9]) {\n tzHour = Number(match[9] + match[10]);\n tzMin = Number(match[9] + match[11]);\n }\n dateSetter.call(date, Number(match[1]), Number(match[2]) - 1, Number(match[3]));\n const h = Number(match[4] || 0) - tzHour;\n const m = Number(match[5] || 0) - tzMin;\n const s = Number(match[6] || 0);\n // The ECMAScript specification (https://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.11)\n // defines that `DateTime` milliseconds should always be rounded down, so that `999.9ms`\n // becomes `999ms`.\n const ms = Math.floor(parseFloat('0.' + (match[7] || 0)) * 1000);\n timeSetter.call(date, h, m, s, ms);\n return date;\n}\nfunction isDate(value) {\n return value instanceof Date && !isNaN(value.valueOf());\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst NUMBER_FORMAT_REGEXP = /^(\\d+)?\\.((\\d+)(-(\\d+))?)?$/;\nconst MAX_DIGITS = 22;\nconst DECIMAL_SEP = '.';\nconst ZERO_CHAR = '0';\nconst PATTERN_SEP = ';';\nconst GROUP_SEP = ',';\nconst DIGIT_CHAR = '#';\nconst CURRENCY_CHAR = '¤';\nconst PERCENT_CHAR = '%';\n/**\n * Transforms a number to a locale string based on a style and a format.\n */\nfunction formatNumberToLocaleString(value, pattern, locale, groupSymbol, decimalSymbol, digitsInfo, isPercent = false) {\n let formattedText = '';\n let isZero = false;\n if (!isFinite(value)) {\n formattedText = getLocaleNumberSymbol(locale, NumberSymbol.Infinity);\n }\n else {\n let parsedNumber = parseNumber(value);\n if (isPercent) {\n parsedNumber = toPercent(parsedNumber);\n }\n let minInt = pattern.minInt;\n let minFraction = pattern.minFrac;\n let maxFraction = pattern.maxFrac;\n if (digitsInfo) {\n const parts = digitsInfo.match(NUMBER_FORMAT_REGEXP);\n if (parts === null) {\n throw new Error(`${digitsInfo} is not a valid digit info`);\n }\n const minIntPart = parts[1];\n const minFractionPart = parts[3];\n const maxFractionPart = parts[5];\n if (minIntPart != null) {\n minInt = parseIntAutoRadix(minIntPart);\n }\n if (minFractionPart != null) {\n minFraction = parseIntAutoRadix(minFractionPart);\n }\n if (maxFractionPart != null) {\n maxFraction = parseIntAutoRadix(maxFractionPart);\n }\n else if (minFractionPart != null && minFraction > maxFraction) {\n maxFraction = minFraction;\n }\n }\n roundNumber(parsedNumber, minFraction, maxFraction);\n let digits = parsedNumber.digits;\n let integerLen = parsedNumber.integerLen;\n const exponent = parsedNumber.exponent;\n let decimals = [];\n isZero = digits.every(d => !d);\n // pad zeros for small numbers\n for (; integerLen < minInt; integerLen++) {\n digits.unshift(0);\n }\n // pad zeros for small numbers\n for (; integerLen < 0; integerLen++) {\n digits.unshift(0);\n }\n // extract decimals digits\n if (integerLen > 0) {\n decimals = digits.splice(integerLen, digits.length);\n }\n else {\n decimals = digits;\n digits = [0];\n }\n // format the integer digits with grouping separators\n const groups = [];\n if (digits.length >= pattern.lgSize) {\n groups.unshift(digits.splice(-pattern.lgSize, digits.length).join(''));\n }\n while (digits.length > pattern.gSize) {\n groups.unshift(digits.splice(-pattern.gSize, digits.length).join(''));\n }\n if (digits.length) {\n groups.unshift(digits.join(''));\n }\n formattedText = groups.join(getLocaleNumberSymbol(locale, groupSymbol));\n // append the decimal digits\n if (decimals.length) {\n formattedText += getLocaleNumberSymbol(locale, decimalSymbol) + decimals.join('');\n }\n if (exponent) {\n formattedText += getLocaleNumberSymbol(locale, NumberSymbol.Exponential) + '+' + exponent;\n }\n }\n if (value < 0 && !isZero) {\n formattedText = pattern.negPre + formattedText + pattern.negSuf;\n }\n else {\n formattedText = pattern.posPre + formattedText + pattern.posSuf;\n }\n return formattedText;\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a number as currency using locale rules.\n *\n * @param value The number to format.\n * @param locale A locale code for the locale format rules to use.\n * @param currency A string containing the currency symbol or its name,\n * such as \"$\" or \"Canadian Dollar\". Used in output string, but does not affect the operation\n * of the function.\n * @param currencyCode The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)\n * currency code, such as `USD` for the US dollar and `EUR` for the euro.\n * Used to determine the number of digits in the decimal part.\n * @param digitsInfo Decimal representation options, specified by a string in the following format:\n * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.\n *\n * @returns The formatted currency value.\n *\n * @see `formatNumber()`\n * @see `DecimalPipe`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction formatCurrency(value, locale, currency, currencyCode, digitsInfo) {\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Currency);\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n pattern.minFrac = getNumberOfCurrencyDigits(currencyCode);\n pattern.maxFrac = pattern.minFrac;\n const res = formatNumberToLocaleString(value, pattern, locale, NumberSymbol.CurrencyGroup, NumberSymbol.CurrencyDecimal, digitsInfo);\n return res\n .replace(CURRENCY_CHAR, currency)\n // if we have 2 time the currency character, the second one is ignored\n .replace(CURRENCY_CHAR, '')\n // If there is a spacing between currency character and the value and\n // the currency character is supressed by passing an empty string, the\n // spacing character would remain as part of the string. Then we\n // should remove it.\n .trim();\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a number as a percentage according to locale rules.\n *\n * @param value The number to format.\n * @param locale A locale code for the locale format rules to use.\n * @param digitsInfo Decimal representation options, specified by a string in the following format:\n * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.\n *\n * @returns The formatted percentage value.\n *\n * @see `formatNumber()`\n * @see `DecimalPipe`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n * @publicApi\n *\n */\nfunction formatPercent(value, locale, digitsInfo) {\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Percent);\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n const res = formatNumberToLocaleString(value, pattern, locale, NumberSymbol.Group, NumberSymbol.Decimal, digitsInfo, true);\n return res.replace(new RegExp(PERCENT_CHAR, 'g'), getLocaleNumberSymbol(locale, NumberSymbol.PercentSign));\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a number as text, with group sizing, separator, and other\n * parameters based on the locale.\n *\n * @param value The number to format.\n * @param locale A locale code for the locale format rules to use.\n * @param digitsInfo Decimal representation options, specified by a string in the following format:\n * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.\n *\n * @returns The formatted text string.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction formatNumber(value, locale, digitsInfo) {\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Decimal);\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n return formatNumberToLocaleString(value, pattern, locale, NumberSymbol.Group, NumberSymbol.Decimal, digitsInfo);\n}\nfunction parseNumberFormat(format, minusSign = '-') {\n const p = {\n minInt: 1,\n minFrac: 0,\n maxFrac: 0,\n posPre: '',\n posSuf: '',\n negPre: '',\n negSuf: '',\n gSize: 0,\n lgSize: 0\n };\n const patternParts = format.split(PATTERN_SEP);\n const positive = patternParts[0];\n const negative = patternParts[1];\n const positiveParts = positive.indexOf(DECIMAL_SEP) !== -1 ?\n positive.split(DECIMAL_SEP) :\n [\n positive.substring(0, positive.lastIndexOf(ZERO_CHAR) + 1),\n positive.substring(positive.lastIndexOf(ZERO_CHAR) + 1)\n ], integer = positiveParts[0], fraction = positiveParts[1] || '';\n p.posPre = integer.substr(0, integer.indexOf(DIGIT_CHAR));\n for (let i = 0; i < fraction.length; i++) {\n const ch = fraction.charAt(i);\n if (ch === ZERO_CHAR) {\n p.minFrac = p.maxFrac = i + 1;\n }\n else if (ch === DIGIT_CHAR) {\n p.maxFrac = i + 1;\n }\n else {\n p.posSuf += ch;\n }\n }\n const groups = integer.split(GROUP_SEP);\n p.gSize = groups[1] ? groups[1].length : 0;\n p.lgSize = (groups[2] || groups[1]) ? (groups[2] || groups[1]).length : 0;\n if (negative) {\n const trunkLen = positive.length - p.posPre.length - p.posSuf.length, pos = negative.indexOf(DIGIT_CHAR);\n p.negPre = negative.substr(0, pos).replace(/'/g, '');\n p.negSuf = negative.substr(pos + trunkLen).replace(/'/g, '');\n }\n else {\n p.negPre = minusSign + p.posPre;\n p.negSuf = p.posSuf;\n }\n return p;\n}\n// Transforms a parsed number into a percentage by multiplying it by 100\nfunction toPercent(parsedNumber) {\n // if the number is 0, don't do anything\n if (parsedNumber.digits[0] === 0) {\n return parsedNumber;\n }\n // Getting the current number of decimals\n const fractionLen = parsedNumber.digits.length - parsedNumber.integerLen;\n if (parsedNumber.exponent) {\n parsedNumber.exponent += 2;\n }\n else {\n if (fractionLen === 0) {\n parsedNumber.digits.push(0, 0);\n }\n else if (fractionLen === 1) {\n parsedNumber.digits.push(0);\n }\n parsedNumber.integerLen += 2;\n }\n return parsedNumber;\n}\n/**\n * Parses a number.\n * Significant bits of this parse algorithm came from https://github.com/MikeMcl/big.js/\n */\nfunction parseNumber(num) {\n let numStr = Math.abs(num) + '';\n let exponent = 0, digits, integerLen;\n let i, j, zeros;\n // Decimal point?\n if ((integerLen = numStr.indexOf(DECIMAL_SEP)) > -1) {\n numStr = numStr.replace(DECIMAL_SEP, '');\n }\n // Exponential form?\n if ((i = numStr.search(/e/i)) > 0) {\n // Work out the exponent.\n if (integerLen < 0)\n integerLen = i;\n integerLen += +numStr.slice(i + 1);\n numStr = numStr.substring(0, i);\n }\n else if (integerLen < 0) {\n // There was no decimal point or exponent so it is an integer.\n integerLen = numStr.length;\n }\n // Count the number of leading zeros.\n for (i = 0; numStr.charAt(i) === ZERO_CHAR; i++) { /* empty */\n }\n if (i === (zeros = numStr.length)) {\n // The digits are all zero.\n digits = [0];\n integerLen = 1;\n }\n else {\n // Count the number of trailing zeros\n zeros--;\n while (numStr.charAt(zeros) === ZERO_CHAR)\n zeros--;\n // Trailing zeros are insignificant so ignore them\n integerLen -= i;\n digits = [];\n // Convert string to array of digits without leading/trailing zeros.\n for (j = 0; i <= zeros; i++, j++) {\n digits[j] = Number(numStr.charAt(i));\n }\n }\n // If the number overflows the maximum allowed digits then use an exponent.\n if (integerLen > MAX_DIGITS) {\n digits = digits.splice(0, MAX_DIGITS - 1);\n exponent = integerLen - 1;\n integerLen = 1;\n }\n return { digits, exponent, integerLen };\n}\n/**\n * Round the parsed number to the specified number of decimal places\n * This function changes the parsedNumber in-place\n */\nfunction roundNumber(parsedNumber, minFrac, maxFrac) {\n if (minFrac > maxFrac) {\n throw new Error(`The minimum number of digits after fraction (${minFrac}) is higher than the maximum (${maxFrac}).`);\n }\n let digits = parsedNumber.digits;\n let fractionLen = digits.length - parsedNumber.integerLen;\n const fractionSize = Math.min(Math.max(minFrac, fractionLen), maxFrac);\n // The index of the digit to where rounding is to occur\n let roundAt = fractionSize + parsedNumber.integerLen;\n let digit = digits[roundAt];\n if (roundAt > 0) {\n // Drop fractional digits beyond `roundAt`\n digits.splice(Math.max(parsedNumber.integerLen, roundAt));\n // Set non-fractional digits beyond `roundAt` to 0\n for (let j = roundAt; j < digits.length; j++) {\n digits[j] = 0;\n }\n }\n else {\n // We rounded to zero so reset the parsedNumber\n fractionLen = Math.max(0, fractionLen);\n parsedNumber.integerLen = 1;\n digits.length = Math.max(1, roundAt = fractionSize + 1);\n digits[0] = 0;\n for (let i = 1; i < roundAt; i++)\n digits[i] = 0;\n }\n if (digit >= 5) {\n if (roundAt - 1 < 0) {\n for (let k = 0; k > roundAt; k--) {\n digits.unshift(0);\n parsedNumber.integerLen++;\n }\n digits.unshift(1);\n parsedNumber.integerLen++;\n }\n else {\n digits[roundAt - 1]++;\n }\n }\n // Pad out with zeros to get the required fraction length\n for (; fractionLen < Math.max(0, fractionSize); fractionLen++)\n digits.push(0);\n let dropTrailingZeros = fractionSize !== 0;\n // Minimal length = nb of decimals required + current nb of integers\n // Any number besides that is optional and can be removed if it's a trailing 0\n const minLen = minFrac + parsedNumber.integerLen;\n // Do any carrying, e.g. a digit was rounded up to 10\n const carry = digits.reduceRight(function (carry, d, i, digits) {\n d = d + carry;\n digits[i] = d < 10 ? d : d - 10; // d % 10\n if (dropTrailingZeros) {\n // Do not keep meaningless fractional trailing zeros (e.g. 15.52000 --> 15.52)\n if (digits[i] === 0 && i >= minLen) {\n digits.pop();\n }\n else {\n dropTrailingZeros = false;\n }\n }\n return d >= 10 ? 1 : 0; // Math.floor(d / 10);\n }, 0);\n if (carry) {\n digits.unshift(carry);\n parsedNumber.integerLen++;\n }\n}\nfunction parseIntAutoRadix(text) {\n const result = parseInt(text);\n if (isNaN(result)) {\n throw new Error('Invalid integer literal when parsing ' + text);\n }\n return result;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nclass NgLocalization {\n}\n/**\n * Returns the plural category for a given value.\n * - \"=value\" when the case exists,\n * - the plural category otherwise\n */\nfunction getPluralCategory(value, cases, ngLocalization, locale) {\n let key = `=${value}`;\n if (cases.indexOf(key) > -1) {\n return key;\n }\n key = ngLocalization.getPluralCategory(value, locale);\n if (cases.indexOf(key) > -1) {\n return key;\n }\n if (cases.indexOf('other') > -1) {\n return 'other';\n }\n throw new Error(`No plural message found for value \"${value}\"`);\n}\n/**\n * Returns the plural case based on the locale\n *\n * @publicApi\n */\nclass NgLocaleLocalization extends NgLocalization {\n constructor(locale) {\n super();\n this.locale = locale;\n }\n getPluralCategory(value, locale) {\n const plural = getLocalePluralCase(locale || this.locale)(value);\n switch (plural) {\n case Plural.Zero:\n return 'zero';\n case Plural.One:\n return 'one';\n case Plural.Two:\n return 'two';\n case Plural.Few:\n return 'few';\n case Plural.Many:\n return 'many';\n default:\n return 'other';\n }\n }\n}\nNgLocaleLocalization.ɵfac = function NgLocaleLocalization_Factory(t) { return new (t || NgLocaleLocalization)(ɵngcc0.ɵɵinject(LOCALE_ID)); };\nNgLocaleLocalization.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgLocaleLocalization, factory: NgLocaleLocalization.ɵfac });\nNgLocaleLocalization.ctorParameters = () => [\n { type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgLocaleLocalization, [{\n type: Injectable\n }], function () { return [{ type: String, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Register global data to be used internally by Angular. See the\n * [\"I18n guide\"](guide/i18n-common-format-data-locale) to know how to import additional locale\n * data.\n *\n * The signature registerLocaleData(data: any, extraData?: any) is deprecated since v5.1\n *\n * @publicApi\n */\nfunction registerLocaleData(data, localeId, extraData) {\n return ɵregisterLocaleData(data, localeId, extraData);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction parseCookieValue(cookieStr, name) {\n name = encodeURIComponent(name);\n for (const cookie of cookieStr.split(';')) {\n const eqIndex = cookie.indexOf('=');\n const [cookieName, cookieValue] = eqIndex == -1 ? [cookie, ''] : [cookie.slice(0, eqIndex), cookie.slice(eqIndex + 1)];\n if (cookieName.trim() === name) {\n return decodeURIComponent(cookieValue);\n }\n }\n return null;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @usageNotes\n * ```\n * ...\n *\n * ...\n *\n * ...\n *\n * ...\n *\n * ...\n * ```\n *\n * @description\n *\n * Adds and removes CSS classes on an HTML element.\n *\n * The CSS classes are updated as follows, depending on the type of the expression evaluation:\n * - `string` - the CSS classes listed in the string (space delimited) are added,\n * - `Array` - the CSS classes declared as Array elements are added,\n * - `Object` - keys are CSS classes that get added when the expression given in the value\n * evaluates to a truthy value, otherwise they are removed.\n *\n * @publicApi\n */\nclass NgClass {\n constructor(_iterableDiffers, _keyValueDiffers, _ngEl, _renderer) {\n this._iterableDiffers = _iterableDiffers;\n this._keyValueDiffers = _keyValueDiffers;\n this._ngEl = _ngEl;\n this._renderer = _renderer;\n this._iterableDiffer = null;\n this._keyValueDiffer = null;\n this._initialClasses = [];\n this._rawClass = null;\n }\n set klass(value) {\n this._removeClasses(this._initialClasses);\n this._initialClasses = typeof value === 'string' ? value.split(/\\s+/) : [];\n this._applyClasses(this._initialClasses);\n this._applyClasses(this._rawClass);\n }\n set ngClass(value) {\n this._removeClasses(this._rawClass);\n this._applyClasses(this._initialClasses);\n this._iterableDiffer = null;\n this._keyValueDiffer = null;\n this._rawClass = typeof value === 'string' ? value.split(/\\s+/) : value;\n if (this._rawClass) {\n if (ɵisListLikeIterable(this._rawClass)) {\n this._iterableDiffer = this._iterableDiffers.find(this._rawClass).create();\n }\n else {\n this._keyValueDiffer = this._keyValueDiffers.find(this._rawClass).create();\n }\n }\n }\n ngDoCheck() {\n if (this._iterableDiffer) {\n const iterableChanges = this._iterableDiffer.diff(this._rawClass);\n if (iterableChanges) {\n this._applyIterableChanges(iterableChanges);\n }\n }\n else if (this._keyValueDiffer) {\n const keyValueChanges = this._keyValueDiffer.diff(this._rawClass);\n if (keyValueChanges) {\n this._applyKeyValueChanges(keyValueChanges);\n }\n }\n }\n _applyKeyValueChanges(changes) {\n changes.forEachAddedItem((record) => this._toggleClass(record.key, record.currentValue));\n changes.forEachChangedItem((record) => this._toggleClass(record.key, record.currentValue));\n changes.forEachRemovedItem((record) => {\n if (record.previousValue) {\n this._toggleClass(record.key, false);\n }\n });\n }\n _applyIterableChanges(changes) {\n changes.forEachAddedItem((record) => {\n if (typeof record.item === 'string') {\n this._toggleClass(record.item, true);\n }\n else {\n throw new Error(`NgClass can only toggle CSS classes expressed as strings, got ${ɵstringify(record.item)}`);\n }\n });\n changes.forEachRemovedItem((record) => this._toggleClass(record.item, false));\n }\n /**\n * Applies a collection of CSS classes to the DOM element.\n *\n * For argument of type Set and Array CSS class names contained in those collections are always\n * added.\n * For argument of type Map CSS class name in the map's key is toggled based on the value (added\n * for truthy and removed for falsy).\n */\n _applyClasses(rawClassVal) {\n if (rawClassVal) {\n if (Array.isArray(rawClassVal) || rawClassVal instanceof Set) {\n rawClassVal.forEach((klass) => this._toggleClass(klass, true));\n }\n else {\n Object.keys(rawClassVal).forEach(klass => this._toggleClass(klass, !!rawClassVal[klass]));\n }\n }\n }\n /**\n * Removes a collection of CSS classes from the DOM element. This is mostly useful for cleanup\n * purposes.\n */\n _removeClasses(rawClassVal) {\n if (rawClassVal) {\n if (Array.isArray(rawClassVal) || rawClassVal instanceof Set) {\n rawClassVal.forEach((klass) => this._toggleClass(klass, false));\n }\n else {\n Object.keys(rawClassVal).forEach(klass => this._toggleClass(klass, false));\n }\n }\n }\n _toggleClass(klass, enabled) {\n klass = klass.trim();\n if (klass) {\n klass.split(/\\s+/g).forEach(klass => {\n if (enabled) {\n this._renderer.addClass(this._ngEl.nativeElement, klass);\n }\n else {\n this._renderer.removeClass(this._ngEl.nativeElement, klass);\n }\n });\n }\n }\n}\nNgClass.ɵfac = function NgClass_Factory(t) { return new (t || NgClass)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.IterableDiffers), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.KeyValueDiffers), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nNgClass.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgClass, selectors: [[\"\", \"ngClass\", \"\"]], inputs: { klass: [\"class\", \"klass\"], ngClass: \"ngClass\" } });\nNgClass.ctorParameters = () => [\n { type: IterableDiffers },\n { type: KeyValueDiffers },\n { type: ElementRef },\n { type: Renderer2 }\n];\nNgClass.propDecorators = {\n klass: [{ type: Input, args: ['class',] }],\n ngClass: [{ type: Input, args: ['ngClass',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgClass, [{\n type: Directive,\n args: [{ selector: '[ngClass]' }]\n }], function () { return [{ type: ɵngcc0.IterableDiffers }, { type: ɵngcc0.KeyValueDiffers }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }]; }, { klass: [{\n type: Input,\n args: ['class']\n }], ngClass: [{\n type: Input,\n args: ['ngClass']\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Instantiates a {@link Component} type and inserts its Host View into the current View.\n * `NgComponentOutlet` provides a declarative approach for dynamic component creation.\n *\n * `NgComponentOutlet` requires a component type, if a falsy value is set the view will clear and\n * any existing component will be destroyed.\n *\n * @usageNotes\n *\n * ### Fine tune control\n *\n * You can control the component creation process by using the following optional attributes:\n *\n * * `ngComponentOutletInjector`: Optional custom {@link Injector} that will be used as parent for\n * the Component. Defaults to the injector of the current view container.\n *\n * * `ngComponentOutletContent`: Optional list of projectable nodes to insert into the content\n * section of the component, if it exists.\n *\n * * `ngComponentOutletNgModuleFactory`: Optional module factory to allow loading another\n * module dynamically, then loading a component from that module.\n *\n * ### Syntax\n *\n * Simple\n * ```\n * \n * ```\n *\n * Customized injector/content\n * ```\n * \n * \n * ```\n *\n * Customized ngModuleFactory\n * ```\n * \n * \n * ```\n *\n * ### A simple example\n *\n * {@example common/ngComponentOutlet/ts/module.ts region='SimpleExample'}\n *\n * A more complete example with additional options:\n *\n * {@example common/ngComponentOutlet/ts/module.ts region='CompleteExample'}\n *\n * @publicApi\n * @ngModule CommonModule\n */\nclass NgComponentOutlet {\n constructor(_viewContainerRef) {\n this._viewContainerRef = _viewContainerRef;\n this._componentRef = null;\n this._moduleRef = null;\n }\n ngOnChanges(changes) {\n this._viewContainerRef.clear();\n this._componentRef = null;\n if (this.ngComponentOutlet) {\n const elInjector = this.ngComponentOutletInjector || this._viewContainerRef.parentInjector;\n if (changes['ngComponentOutletNgModuleFactory']) {\n if (this._moduleRef)\n this._moduleRef.destroy();\n if (this.ngComponentOutletNgModuleFactory) {\n const parentModule = elInjector.get(NgModuleRef);\n this._moduleRef = this.ngComponentOutletNgModuleFactory.create(parentModule.injector);\n }\n else {\n this._moduleRef = null;\n }\n }\n const componentFactoryResolver = this._moduleRef ? this._moduleRef.componentFactoryResolver :\n elInjector.get(ComponentFactoryResolver);\n const componentFactory = componentFactoryResolver.resolveComponentFactory(this.ngComponentOutlet);\n this._componentRef = this._viewContainerRef.createComponent(componentFactory, this._viewContainerRef.length, elInjector, this.ngComponentOutletContent);\n }\n }\n ngOnDestroy() {\n if (this._moduleRef)\n this._moduleRef.destroy();\n }\n}\nNgComponentOutlet.ɵfac = function NgComponentOutlet_Factory(t) { return new (t || NgComponentOutlet)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef)); };\nNgComponentOutlet.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgComponentOutlet, selectors: [[\"\", \"ngComponentOutlet\", \"\"]], inputs: { ngComponentOutlet: \"ngComponentOutlet\", ngComponentOutletInjector: \"ngComponentOutletInjector\", ngComponentOutletContent: \"ngComponentOutletContent\", ngComponentOutletNgModuleFactory: \"ngComponentOutletNgModuleFactory\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\nNgComponentOutlet.ctorParameters = () => [\n { type: ViewContainerRef }\n];\nNgComponentOutlet.propDecorators = {\n ngComponentOutlet: [{ type: Input }],\n ngComponentOutletInjector: [{ type: Input }],\n ngComponentOutletContent: [{ type: Input }],\n ngComponentOutletNgModuleFactory: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgComponentOutlet, [{\n type: Directive,\n args: [{ selector: '[ngComponentOutlet]' }]\n }], function () { return [{ type: ɵngcc0.ViewContainerRef }]; }, { ngComponentOutlet: [{\n type: Input\n }], ngComponentOutletInjector: [{\n type: Input\n }], ngComponentOutletContent: [{\n type: Input\n }], ngComponentOutletNgModuleFactory: [{\n type: Input\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nclass NgForOfContext {\n constructor($implicit, ngForOf, index, count) {\n this.$implicit = $implicit;\n this.ngForOf = ngForOf;\n this.index = index;\n this.count = count;\n }\n get first() {\n return this.index === 0;\n }\n get last() {\n return this.index === this.count - 1;\n }\n get even() {\n return this.index % 2 === 0;\n }\n get odd() {\n return !this.even;\n }\n}\n/**\n * A [structural directive](guide/structural-directives) that renders\n * a template for each item in a collection.\n * The directive is placed on an element, which becomes the parent\n * of the cloned templates.\n *\n * The `ngForOf` directive is generally used in the\n * [shorthand form](guide/structural-directives#asterisk) `*ngFor`.\n * In this form, the template to be rendered for each iteration is the content\n * of an anchor element containing the directive.\n *\n * The following example shows the shorthand syntax with some options,\n * contained in an `
  • ` element.\n *\n * ```\n *
  • ...
  • \n * ```\n *\n * The shorthand form expands into a long form that uses the `ngForOf` selector\n * on an `` element.\n * The content of the `` element is the `
  • ` element that held the\n * short-form directive.\n *\n * Here is the expanded version of the short-form example.\n *\n * ```\n * \n *
  • ...
  • \n *
    \n * ```\n *\n * Angular automatically expands the shorthand syntax as it compiles the template.\n * The context for each embedded view is logically merged to the current component\n * context according to its lexical position.\n *\n * When using the shorthand syntax, Angular allows only [one structural directive\n * on an element](guide/built-in-directives#one-per-element).\n * If you want to iterate conditionally, for example,\n * put the `*ngIf` on a container element that wraps the `*ngFor` element.\n * For futher discussion, see\n * [Structural Directives](guide/built-in-directives#one-per-element).\n *\n * @usageNotes\n *\n * ### Local variables\n *\n * `NgForOf` provides exported values that can be aliased to local variables.\n * For example:\n *\n * ```\n *
  • \n * {{i}}/{{users.length}}. {{user}} default\n *
  • \n * ```\n *\n * The following exported values can be aliased to local variables:\n *\n * - `$implicit: T`: The value of the individual items in the iterable (`ngForOf`).\n * - `ngForOf: NgIterable`: The value of the iterable expression. Useful when the expression is\n * more complex then a property access, for example when using the async pipe (`userStreams |\n * async`).\n * - `index: number`: The index of the current item in the iterable.\n * - `count: number`: The length of the iterable.\n * - `first: boolean`: True when the item is the first item in the iterable.\n * - `last: boolean`: True when the item is the last item in the iterable.\n * - `even: boolean`: True when the item has an even index in the iterable.\n * - `odd: boolean`: True when the item has an odd index in the iterable.\n *\n * ### Change propagation\n *\n * When the contents of the iterator changes, `NgForOf` makes the corresponding changes to the DOM:\n *\n * * When an item is added, a new instance of the template is added to the DOM.\n * * When an item is removed, its template instance is removed from the DOM.\n * * When items are reordered, their respective templates are reordered in the DOM.\n *\n * Angular uses object identity to track insertions and deletions within the iterator and reproduce\n * those changes in the DOM. This has important implications for animations and any stateful\n * controls that are present, such as `` elements that accept user input. Inserted rows can\n * be animated in, deleted rows can be animated out, and unchanged rows retain any unsaved state\n * such as user input.\n * For more on animations, see [Transitions and Triggers](guide/transition-and-triggers).\n *\n * The identities of elements in the iterator can change while the data does not.\n * This can happen, for example, if the iterator is produced from an RPC to the server, and that\n * RPC is re-run. Even if the data hasn't changed, the second response produces objects with\n * different identities, and Angular must tear down the entire DOM and rebuild it (as if all old\n * elements were deleted and all new elements inserted).\n *\n * To avoid this expensive operation, you can customize the default tracking algorithm.\n * by supplying the `trackBy` option to `NgForOf`.\n * `trackBy` takes a function that has two arguments: `index` and `item`.\n * If `trackBy` is given, Angular tracks changes by the return value of the function.\n *\n * @see [Structural Directives](guide/structural-directives)\n * @ngModule CommonModule\n * @publicApi\n */\nclass NgForOf {\n constructor(_viewContainer, _template, _differs) {\n this._viewContainer = _viewContainer;\n this._template = _template;\n this._differs = _differs;\n this._ngForOf = null;\n this._ngForOfDirty = true;\n this._differ = null;\n }\n /**\n * The value of the iterable expression, which can be used as a\n * [template input variable](guide/structural-directives#shorthand).\n */\n set ngForOf(ngForOf) {\n this._ngForOf = ngForOf;\n this._ngForOfDirty = true;\n }\n /**\n * Specifies a custom `TrackByFunction` to compute the identity of items in an iterable.\n *\n * If a custom `TrackByFunction` is not provided, `NgForOf` will use the item's [object\n * identity](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is)\n * as the key.\n *\n * `NgForOf` uses the computed key to associate items in an iterable with DOM elements\n * it produces for these items.\n *\n * A custom `TrackByFunction` is useful to provide good user experience in cases when items in an\n * iterable rendered using `NgForOf` have a natural identifier (for example, custom ID or a\n * primary key), and this iterable could be updated with new object instances that still\n * represent the same underlying entity (for example, when data is re-fetched from the server,\n * and the iterable is recreated and re-rendered, but most of the data is still the same).\n *\n * @see `TrackByFunction`\n */\n set ngForTrackBy(fn) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && fn != null && typeof fn !== 'function') {\n // TODO(vicb): use a log service once there is a public one available\n if (console && console.warn) {\n console.warn(`trackBy must be a function, but received ${JSON.stringify(fn)}. ` +\n `See https://angular.io/api/common/NgForOf#change-propagation for more information.`);\n }\n }\n this._trackByFn = fn;\n }\n get ngForTrackBy() {\n return this._trackByFn;\n }\n /**\n * A reference to the template that is stamped out for each item in the iterable.\n * @see [template reference variable](guide/template-reference-variables)\n */\n set ngForTemplate(value) {\n // TODO(TS2.1): make TemplateRef>> once we move to TS v2.1\n // The current type is too restrictive; a template that just uses index, for example,\n // should be acceptable.\n if (value) {\n this._template = value;\n }\n }\n /**\n * Applies the changes when needed.\n */\n ngDoCheck() {\n if (this._ngForOfDirty) {\n this._ngForOfDirty = false;\n // React on ngForOf changes only once all inputs have been initialized\n const value = this._ngForOf;\n if (!this._differ && value) {\n try {\n this._differ = this._differs.find(value).create(this.ngForTrackBy);\n }\n catch (_a) {\n throw new Error(`Cannot find a differ supporting object '${value}' of type '${getTypeName(value)}'. NgFor only supports binding to Iterables such as Arrays.`);\n }\n }\n }\n if (this._differ) {\n const changes = this._differ.diff(this._ngForOf);\n if (changes)\n this._applyChanges(changes);\n }\n }\n _applyChanges(changes) {\n const insertTuples = [];\n changes.forEachOperation((item, adjustedPreviousIndex, currentIndex) => {\n if (item.previousIndex == null) {\n // NgForOf is never \"null\" or \"undefined\" here because the differ detected\n // that a new item needs to be inserted from the iterable. This implies that\n // there is an iterable value for \"_ngForOf\".\n const view = this._viewContainer.createEmbeddedView(this._template, new NgForOfContext(null, this._ngForOf, -1, -1), currentIndex === null ? undefined : currentIndex);\n const tuple = new RecordViewTuple(item, view);\n insertTuples.push(tuple);\n }\n else if (currentIndex == null) {\n this._viewContainer.remove(adjustedPreviousIndex === null ? undefined : adjustedPreviousIndex);\n }\n else if (adjustedPreviousIndex !== null) {\n const view = this._viewContainer.get(adjustedPreviousIndex);\n this._viewContainer.move(view, currentIndex);\n const tuple = new RecordViewTuple(item, view);\n insertTuples.push(tuple);\n }\n });\n for (let i = 0; i < insertTuples.length; i++) {\n this._perViewChange(insertTuples[i].view, insertTuples[i].record);\n }\n for (let i = 0, ilen = this._viewContainer.length; i < ilen; i++) {\n const viewRef = this._viewContainer.get(i);\n viewRef.context.index = i;\n viewRef.context.count = ilen;\n viewRef.context.ngForOf = this._ngForOf;\n }\n changes.forEachIdentityChange((record) => {\n const viewRef = this._viewContainer.get(record.currentIndex);\n viewRef.context.$implicit = record.item;\n });\n }\n _perViewChange(view, record) {\n view.context.$implicit = record.item;\n }\n /**\n * Asserts the correct type of the context for the template that `NgForOf` will render.\n *\n * The presence of this method is a signal to the Ivy template type-check compiler that the\n * `NgForOf` structural directive renders its template with a specific context type.\n */\n static ngTemplateContextGuard(dir, ctx) {\n return true;\n }\n}\nNgForOf.ɵfac = function NgForOf_Factory(t) { return new (t || NgForOf)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.IterableDiffers)); };\nNgForOf.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgForOf, selectors: [[\"\", \"ngFor\", \"\", \"ngForOf\", \"\"]], inputs: { ngForOf: \"ngForOf\", ngForTrackBy: \"ngForTrackBy\", ngForTemplate: \"ngForTemplate\" } });\nNgForOf.ctorParameters = () => [\n { type: ViewContainerRef },\n { type: TemplateRef },\n { type: IterableDiffers }\n];\nNgForOf.propDecorators = {\n ngForOf: [{ type: Input }],\n ngForTrackBy: [{ type: Input }],\n ngForTemplate: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgForOf, [{\n type: Directive,\n args: [{ selector: '[ngFor][ngForOf]' }]\n }], function () { return [{ type: ɵngcc0.ViewContainerRef }, { type: ɵngcc0.TemplateRef }, { type: ɵngcc0.IterableDiffers }]; }, { ngForOf: [{\n type: Input\n }], ngForTrackBy: [{\n type: Input\n }], ngForTemplate: [{\n type: Input\n }] }); })();\nclass RecordViewTuple {\n constructor(record, view) {\n this.record = record;\n this.view = view;\n }\n}\nfunction getTypeName(type) {\n return type['name'] || typeof type;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A structural directive that conditionally includes a template based on the value of\n * an expression coerced to Boolean.\n * When the expression evaluates to true, Angular renders the template\n * provided in a `then` clause, and when false or null,\n * Angular renders the template provided in an optional `else` clause. The default\n * template for the `else` clause is blank.\n *\n * A [shorthand form](guide/structural-directives#asterisk) of the directive,\n * `*ngIf=\"condition\"`, is generally used, provided\n * as an attribute of the anchor element for the inserted template.\n * Angular expands this into a more explicit version, in which the anchor element\n * is contained in an `` element.\n *\n * Simple form with shorthand syntax:\n *\n * ```\n *
    Content to render when condition is true.
    \n * ```\n *\n * Simple form with expanded syntax:\n *\n * ```\n *
    Content to render when condition is\n * true.
    \n * ```\n *\n * Form with an \"else\" block:\n *\n * ```\n *
    Content to render when condition is true.
    \n * Content to render when condition is false.\n * ```\n *\n * Shorthand form with \"then\" and \"else\" blocks:\n *\n * ```\n *
    \n * Content to render when condition is true.\n * Content to render when condition is false.\n * ```\n *\n * Form with storing the value locally:\n *\n * ```\n *
    {{value}}
    \n * Content to render when value is null.\n * ```\n *\n * @usageNotes\n *\n * The `*ngIf` directive is most commonly used to conditionally show an inline template,\n * as seen in the following example.\n * The default `else` template is blank.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfSimple'}\n *\n * ### Showing an alternative template using `else`\n *\n * To display a template when `expression` evaluates to false, use an `else` template\n * binding as shown in the following example.\n * The `else` binding points to an `` element labeled `#elseBlock`.\n * The template can be defined anywhere in the component view, but is typically placed right after\n * `ngIf` for readability.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfElse'}\n *\n * ### Using an external `then` template\n *\n * In the previous example, the then-clause template is specified inline, as the content of the\n * tag that contains the `ngIf` directive. You can also specify a template that is defined\n * externally, by referencing a labeled `` element. When you do this, you can\n * change which template to use at runtime, as shown in the following example.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfThenElse'}\n *\n * ### Storing a conditional result in a variable\n *\n * You might want to show a set of properties from the same object. If you are waiting\n * for asynchronous data, the object can be undefined.\n * In this case, you can use `ngIf` and store the result of the condition in a local\n * variable as shown in the following example.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfAs'}\n *\n * This code uses only one `AsyncPipe`, so only one subscription is created.\n * The conditional statement stores the result of `userStream|async` in the local variable `user`.\n * You can then bind the local `user` repeatedly.\n *\n * The conditional displays the data only if `userStream` returns a value,\n * so you don't need to use the\n * safe-navigation-operator (`?.`)\n * to guard against null values when accessing properties.\n * You can display an alternative template while waiting for the data.\n *\n * ### Shorthand syntax\n *\n * The shorthand syntax `*ngIf` expands into two separate template specifications\n * for the \"then\" and \"else\" clauses. For example, consider the following shorthand statement,\n * that is meant to show a loading page while waiting for data to be loaded.\n *\n * ```\n *
    \n * ...\n *
    \n *\n * \n *
    Loading...
    \n *
    \n * ```\n *\n * You can see that the \"else\" clause references the ``\n * with the `#loading` label, and the template for the \"then\" clause\n * is provided as the content of the anchor element.\n *\n * However, when Angular expands the shorthand syntax, it creates\n * another `` tag, with `ngIf` and `ngIfElse` directives.\n * The anchor element containing the template for the \"then\" clause becomes\n * the content of this unlabeled `` tag.\n *\n * ```\n * \n *
    \n * ...\n *
    \n *
    \n *\n * \n *
    Loading...
    \n *
    \n * ```\n *\n * The presence of the implicit template object has implications for the nesting of\n * structural directives. For more on this subject, see\n * [Structural Directives](https://angular.io/guide/built-in-directives#one-per-element).\n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass NgIf {\n constructor(_viewContainer, templateRef) {\n this._viewContainer = _viewContainer;\n this._context = new NgIfContext();\n this._thenTemplateRef = null;\n this._elseTemplateRef = null;\n this._thenViewRef = null;\n this._elseViewRef = null;\n this._thenTemplateRef = templateRef;\n }\n /**\n * The Boolean expression to evaluate as the condition for showing a template.\n */\n set ngIf(condition) {\n this._context.$implicit = this._context.ngIf = condition;\n this._updateView();\n }\n /**\n * A template to show if the condition expression evaluates to true.\n */\n set ngIfThen(templateRef) {\n assertTemplate('ngIfThen', templateRef);\n this._thenTemplateRef = templateRef;\n this._thenViewRef = null; // clear previous view if any.\n this._updateView();\n }\n /**\n * A template to show if the condition expression evaluates to false.\n */\n set ngIfElse(templateRef) {\n assertTemplate('ngIfElse', templateRef);\n this._elseTemplateRef = templateRef;\n this._elseViewRef = null; // clear previous view if any.\n this._updateView();\n }\n _updateView() {\n if (this._context.$implicit) {\n if (!this._thenViewRef) {\n this._viewContainer.clear();\n this._elseViewRef = null;\n if (this._thenTemplateRef) {\n this._thenViewRef =\n this._viewContainer.createEmbeddedView(this._thenTemplateRef, this._context);\n }\n }\n }\n else {\n if (!this._elseViewRef) {\n this._viewContainer.clear();\n this._thenViewRef = null;\n if (this._elseTemplateRef) {\n this._elseViewRef =\n this._viewContainer.createEmbeddedView(this._elseTemplateRef, this._context);\n }\n }\n }\n }\n /**\n * Asserts the correct type of the context for the template that `NgIf` will render.\n *\n * The presence of this method is a signal to the Ivy template type-check compiler that the\n * `NgIf` structural directive renders its template with a specific context type.\n */\n static ngTemplateContextGuard(dir, ctx) {\n return true;\n }\n}\nNgIf.ɵfac = function NgIf_Factory(t) { return new (t || NgIf)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgIf.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgIf, selectors: [[\"\", \"ngIf\", \"\"]], inputs: { ngIf: \"ngIf\", ngIfThen: \"ngIfThen\", ngIfElse: \"ngIfElse\" } });\nNgIf.ctorParameters = () => [\n { type: ViewContainerRef },\n { type: TemplateRef }\n];\nNgIf.propDecorators = {\n ngIf: [{ type: Input }],\n ngIfThen: [{ type: Input }],\n ngIfElse: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgIf, [{\n type: Directive,\n args: [{ selector: '[ngIf]' }]\n }], function () { return [{ type: ɵngcc0.ViewContainerRef }, { type: ɵngcc0.TemplateRef }]; }, { ngIf: [{\n type: Input\n }], ngIfThen: [{\n type: Input\n }], ngIfElse: [{\n type: Input\n }] }); })();\n/**\n * @publicApi\n */\nclass NgIfContext {\n constructor() {\n this.$implicit = null;\n this.ngIf = null;\n }\n}\nfunction assertTemplate(property, templateRef) {\n const isTemplateRefOrNull = !!(!templateRef || templateRef.createEmbeddedView);\n if (!isTemplateRefOrNull) {\n throw new Error(`${property} must be a TemplateRef, but received '${ɵstringify(templateRef)}'.`);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass SwitchView {\n constructor(_viewContainerRef, _templateRef) {\n this._viewContainerRef = _viewContainerRef;\n this._templateRef = _templateRef;\n this._created = false;\n }\n create() {\n this._created = true;\n this._viewContainerRef.createEmbeddedView(this._templateRef);\n }\n destroy() {\n this._created = false;\n this._viewContainerRef.clear();\n }\n enforceState(created) {\n if (created && !this._created) {\n this.create();\n }\n else if (!created && this._created) {\n this.destroy();\n }\n }\n}\n/**\n * @ngModule CommonModule\n *\n * @description\n * The `[ngSwitch]` directive on a container specifies an expression to match against.\n * The expressions to match are provided by `ngSwitchCase` directives on views within the container.\n * - Every view that matches is rendered.\n * - If there are no matches, a view with the `ngSwitchDefault` directive is rendered.\n * - Elements within the `[NgSwitch]` statement but outside of any `NgSwitchCase`\n * or `ngSwitchDefault` directive are preserved at the location.\n *\n * @usageNotes\n * Define a container element for the directive, and specify the switch expression\n * to match against as an attribute:\n *\n * ```\n * \n * ```\n *\n * Within the container, `*ngSwitchCase` statements specify the match expressions\n * as attributes. Include `*ngSwitchDefault` as the final case.\n *\n * ```\n * \n * ...\n * ...\n * ...\n * \n * ```\n *\n * ### Usage Examples\n *\n * The following example shows how to use more than one case to display the same view:\n *\n * ```\n * \n * \n * ...\n * ...\n * ...\n * \n * ...\n * \n * ```\n *\n * The following example shows how cases can be nested:\n * ```\n * \n * ...\n * ...\n * ...\n * \n * \n * \n * \n * \n * ...\n * \n * ```\n *\n * @publicApi\n * @see `NgSwitchCase`\n * @see `NgSwitchDefault`\n * @see [Structural Directives](guide/structural-directives)\n *\n */\nclass NgSwitch {\n constructor() {\n this._defaultUsed = false;\n this._caseCount = 0;\n this._lastCaseCheckIndex = 0;\n this._lastCasesMatched = false;\n }\n set ngSwitch(newValue) {\n this._ngSwitch = newValue;\n if (this._caseCount === 0) {\n this._updateDefaultCases(true);\n }\n }\n /** @internal */\n _addCase() {\n return this._caseCount++;\n }\n /** @internal */\n _addDefault(view) {\n if (!this._defaultViews) {\n this._defaultViews = [];\n }\n this._defaultViews.push(view);\n }\n /** @internal */\n _matchCase(value) {\n const matched = value == this._ngSwitch;\n this._lastCasesMatched = this._lastCasesMatched || matched;\n this._lastCaseCheckIndex++;\n if (this._lastCaseCheckIndex === this._caseCount) {\n this._updateDefaultCases(!this._lastCasesMatched);\n this._lastCaseCheckIndex = 0;\n this._lastCasesMatched = false;\n }\n return matched;\n }\n _updateDefaultCases(useDefault) {\n if (this._defaultViews && useDefault !== this._defaultUsed) {\n this._defaultUsed = useDefault;\n for (let i = 0; i < this._defaultViews.length; i++) {\n const defaultView = this._defaultViews[i];\n defaultView.enforceState(useDefault);\n }\n }\n }\n}\nNgSwitch.ɵfac = function NgSwitch_Factory(t) { return new (t || NgSwitch)(); };\nNgSwitch.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgSwitch, selectors: [[\"\", \"ngSwitch\", \"\"]], inputs: { ngSwitch: \"ngSwitch\" } });\nNgSwitch.propDecorators = {\n ngSwitch: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgSwitch, [{\n type: Directive,\n args: [{ selector: '[ngSwitch]' }]\n }], function () { return []; }, { ngSwitch: [{\n type: Input\n }] }); })();\n/**\n * @ngModule CommonModule\n *\n * @description\n * Provides a switch case expression to match against an enclosing `ngSwitch` expression.\n * When the expressions match, the given `NgSwitchCase` template is rendered.\n * If multiple match expressions match the switch expression value, all of them are displayed.\n *\n * @usageNotes\n *\n * Within a switch container, `*ngSwitchCase` statements specify the match expressions\n * as attributes. Include `*ngSwitchDefault` as the final case.\n *\n * ```\n * \n * ...\n * ...\n * ...\n * \n * ```\n *\n * Each switch-case statement contains an in-line HTML template or template reference\n * that defines the subtree to be selected if the value of the match expression\n * matches the value of the switch expression.\n *\n * Unlike JavaScript, which uses strict equality, Angular uses loose equality.\n * This means that the empty string, `\"\"` matches 0.\n *\n * @publicApi\n * @see `NgSwitch`\n * @see `NgSwitchDefault`\n *\n */\nclass NgSwitchCase {\n constructor(viewContainer, templateRef, ngSwitch) {\n this.ngSwitch = ngSwitch;\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !ngSwitch) {\n throwNgSwitchProviderNotFoundError('ngSwitchCase', 'NgSwitchCase');\n }\n ngSwitch._addCase();\n this._view = new SwitchView(viewContainer, templateRef);\n }\n /**\n * Performs case matching. For internal use only.\n */\n ngDoCheck() {\n this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase));\n }\n}\nNgSwitchCase.ɵfac = function NgSwitchCase_Factory(t) { return new (t || NgSwitchCase)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef), ɵngcc0.ɵɵdirectiveInject(NgSwitch, 9)); };\nNgSwitchCase.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgSwitchCase, selectors: [[\"\", \"ngSwitchCase\", \"\"]], inputs: { ngSwitchCase: \"ngSwitchCase\" } });\nNgSwitchCase.ctorParameters = () => [\n { type: ViewContainerRef },\n { type: TemplateRef },\n { type: NgSwitch, decorators: [{ type: Optional }, { type: Host }] }\n];\nNgSwitchCase.propDecorators = {\n ngSwitchCase: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgSwitchCase, [{\n type: Directive,\n args: [{ selector: '[ngSwitchCase]' }]\n }], function () { return [{ type: ɵngcc0.ViewContainerRef }, { type: ɵngcc0.TemplateRef }, { type: NgSwitch, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }]; }, { ngSwitchCase: [{\n type: Input\n }] }); })();\n/**\n * @ngModule CommonModule\n *\n * @description\n *\n * Creates a view that is rendered when no `NgSwitchCase` expressions\n * match the `NgSwitch` expression.\n * This statement should be the final case in an `NgSwitch`.\n *\n * @publicApi\n * @see `NgSwitch`\n * @see `NgSwitchCase`\n *\n */\nclass NgSwitchDefault {\n constructor(viewContainer, templateRef, ngSwitch) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !ngSwitch) {\n throwNgSwitchProviderNotFoundError('ngSwitchDefault', 'NgSwitchDefault');\n }\n ngSwitch._addDefault(new SwitchView(viewContainer, templateRef));\n }\n}\nNgSwitchDefault.ɵfac = function NgSwitchDefault_Factory(t) { return new (t || NgSwitchDefault)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef), ɵngcc0.ɵɵdirectiveInject(NgSwitch, 9)); };\nNgSwitchDefault.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgSwitchDefault, selectors: [[\"\", \"ngSwitchDefault\", \"\"]] });\nNgSwitchDefault.ctorParameters = () => [\n { type: ViewContainerRef },\n { type: TemplateRef },\n { type: NgSwitch, decorators: [{ type: Optional }, { type: Host }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgSwitchDefault, [{\n type: Directive,\n args: [{ selector: '[ngSwitchDefault]' }]\n }], function () { return [{ type: ɵngcc0.ViewContainerRef }, { type: ɵngcc0.TemplateRef }, { type: NgSwitch, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }]; }, null); })();\nfunction throwNgSwitchProviderNotFoundError(attrName, directiveName) {\n throw new ɵRuntimeError(\"305\" /* TEMPLATE_STRUCTURE_ERROR */, `An element with the \"${attrName}\" attribute ` +\n `(matching the \"${directiveName}\" directive) must be located inside an element with the \"ngSwitch\" attribute ` +\n `(matching \"NgSwitch\" directive)`);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @usageNotes\n * ```\n * \n * there is nothing\n * there is one\n * there are a few\n * \n * ```\n *\n * @description\n *\n * Adds / removes DOM sub-trees based on a numeric value. Tailored for pluralization.\n *\n * Displays DOM sub-trees that match the switch expression value, or failing that, DOM sub-trees\n * that match the switch expression's pluralization category.\n *\n * To use this directive you must provide a container element that sets the `[ngPlural]` attribute\n * to a switch expression. Inner elements with a `[ngPluralCase]` will display based on their\n * expression:\n * - if `[ngPluralCase]` is set to a value starting with `=`, it will only display if the value\n * matches the switch expression exactly,\n * - otherwise, the view will be treated as a \"category match\", and will only display if exact\n * value matches aren't found and the value maps to its category for the defined locale.\n *\n * See http://cldr.unicode.org/index/cldr-spec/plural-rules\n *\n * @publicApi\n */\nclass NgPlural {\n constructor(_localization) {\n this._localization = _localization;\n this._caseViews = {};\n }\n set ngPlural(value) {\n this._switchValue = value;\n this._updateView();\n }\n addCase(value, switchView) {\n this._caseViews[value] = switchView;\n }\n _updateView() {\n this._clearViews();\n const cases = Object.keys(this._caseViews);\n const key = getPluralCategory(this._switchValue, cases, this._localization);\n this._activateView(this._caseViews[key]);\n }\n _clearViews() {\n if (this._activeView)\n this._activeView.destroy();\n }\n _activateView(view) {\n if (view) {\n this._activeView = view;\n this._activeView.create();\n }\n }\n}\nNgPlural.ɵfac = function NgPlural_Factory(t) { return new (t || NgPlural)(ɵngcc0.ɵɵdirectiveInject(NgLocalization)); };\nNgPlural.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgPlural, selectors: [[\"\", \"ngPlural\", \"\"]], inputs: { ngPlural: \"ngPlural\" } });\nNgPlural.ctorParameters = () => [\n { type: NgLocalization }\n];\nNgPlural.propDecorators = {\n ngPlural: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgPlural, [{\n type: Directive,\n args: [{ selector: '[ngPlural]' }]\n }], function () { return [{ type: NgLocalization }]; }, { ngPlural: [{\n type: Input\n }] }); })();\n/**\n * @ngModule CommonModule\n *\n * @description\n *\n * Creates a view that will be added/removed from the parent {@link NgPlural} when the\n * given expression matches the plural expression according to CLDR rules.\n *\n * @usageNotes\n * ```\n * \n * ...\n * ...\n * \n *```\n *\n * See {@link NgPlural} for more details and example.\n *\n * @publicApi\n */\nclass NgPluralCase {\n constructor(value, template, viewContainer, ngPlural) {\n this.value = value;\n const isANumber = !isNaN(Number(value));\n ngPlural.addCase(isANumber ? `=${value}` : value, new SwitchView(viewContainer, template));\n }\n}\nNgPluralCase.ɵfac = function NgPluralCase_Factory(t) { return new (t || NgPluralCase)(ɵngcc0.ɵɵinjectAttribute('ngPluralCase'), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(NgPlural, 1)); };\nNgPluralCase.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgPluralCase, selectors: [[\"\", \"ngPluralCase\", \"\"]] });\nNgPluralCase.ctorParameters = () => [\n { type: String, decorators: [{ type: Attribute, args: ['ngPluralCase',] }] },\n { type: TemplateRef },\n { type: ViewContainerRef },\n { type: NgPlural, decorators: [{ type: Host }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgPluralCase, [{\n type: Directive,\n args: [{ selector: '[ngPluralCase]' }]\n }], function () { return [{ type: String, decorators: [{\n type: Attribute,\n args: ['ngPluralCase']\n }] }, { type: ɵngcc0.TemplateRef }, { type: ɵngcc0.ViewContainerRef }, { type: NgPlural, decorators: [{\n type: Host\n }] }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @usageNotes\n *\n * Set the font of the containing element to the result of an expression.\n *\n * ```\n * ...\n * ```\n *\n * Set the width of the containing element to a pixel value returned by an expression.\n *\n * ```\n * ...\n * ```\n *\n * Set a collection of style values using an expression that returns key-value pairs.\n *\n * ```\n * ...\n * ```\n *\n * @description\n *\n * An attribute directive that updates styles for the containing HTML element.\n * Sets one or more style properties, specified as colon-separated key-value pairs.\n * The key is a style name, with an optional `.` suffix\n * (such as 'top.px', 'font-style.em').\n * The value is an expression to be evaluated.\n * The resulting non-null value, expressed in the given unit,\n * is assigned to the given style property.\n * If the result of evaluation is null, the corresponding style is removed.\n *\n * @publicApi\n */\nclass NgStyle {\n constructor(_ngEl, _differs, _renderer) {\n this._ngEl = _ngEl;\n this._differs = _differs;\n this._renderer = _renderer;\n this._ngStyle = null;\n this._differ = null;\n }\n set ngStyle(values) {\n this._ngStyle = values;\n if (!this._differ && values) {\n this._differ = this._differs.find(values).create();\n }\n }\n ngDoCheck() {\n if (this._differ) {\n const changes = this._differ.diff(this._ngStyle);\n if (changes) {\n this._applyChanges(changes);\n }\n }\n }\n _setStyle(nameAndUnit, value) {\n const [name, unit] = nameAndUnit.split('.');\n value = value != null && unit ? `${value}${unit}` : value;\n if (value != null) {\n this._renderer.setStyle(this._ngEl.nativeElement, name, value);\n }\n else {\n this._renderer.removeStyle(this._ngEl.nativeElement, name);\n }\n }\n _applyChanges(changes) {\n changes.forEachRemovedItem((record) => this._setStyle(record.key, null));\n changes.forEachAddedItem((record) => this._setStyle(record.key, record.currentValue));\n changes.forEachChangedItem((record) => this._setStyle(record.key, record.currentValue));\n }\n}\nNgStyle.ɵfac = function NgStyle_Factory(t) { return new (t || NgStyle)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.KeyValueDiffers), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nNgStyle.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgStyle, selectors: [[\"\", \"ngStyle\", \"\"]], inputs: { ngStyle: \"ngStyle\" } });\nNgStyle.ctorParameters = () => [\n { type: ElementRef },\n { type: KeyValueDiffers },\n { type: Renderer2 }\n];\nNgStyle.propDecorators = {\n ngStyle: [{ type: Input, args: ['ngStyle',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgStyle, [{\n type: Directive,\n args: [{ selector: '[ngStyle]' }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.KeyValueDiffers }, { type: ɵngcc0.Renderer2 }]; }, { ngStyle: [{\n type: Input,\n args: ['ngStyle']\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @description\n *\n * Inserts an embedded view from a prepared `TemplateRef`.\n *\n * You can attach a context object to the `EmbeddedViewRef` by setting `[ngTemplateOutletContext]`.\n * `[ngTemplateOutletContext]` should be an object, the object's keys will be available for binding\n * by the local template `let` declarations.\n *\n * @usageNotes\n * ```\n * \n * ```\n *\n * Using the key `$implicit` in the context object will set its value as default.\n *\n * ### Example\n *\n * {@example common/ngTemplateOutlet/ts/module.ts region='NgTemplateOutlet'}\n *\n * @publicApi\n */\nclass NgTemplateOutlet {\n constructor(_viewContainerRef) {\n this._viewContainerRef = _viewContainerRef;\n this._viewRef = null;\n /**\n * A context object to attach to the {@link EmbeddedViewRef}. This should be an\n * object, the object's keys will be available for binding by the local template `let`\n * declarations.\n * Using the key `$implicit` in the context object will set its value as default.\n */\n this.ngTemplateOutletContext = null;\n /**\n * A string defining the template reference and optionally the context object for the template.\n */\n this.ngTemplateOutlet = null;\n }\n ngOnChanges(changes) {\n if (changes['ngTemplateOutlet']) {\n const viewContainerRef = this._viewContainerRef;\n if (this._viewRef) {\n viewContainerRef.remove(viewContainerRef.indexOf(this._viewRef));\n }\n this._viewRef = this.ngTemplateOutlet ?\n viewContainerRef.createEmbeddedView(this.ngTemplateOutlet, this.ngTemplateOutletContext) :\n null;\n }\n else if (this._viewRef && changes['ngTemplateOutletContext'] && this.ngTemplateOutletContext) {\n this._viewRef.context = this.ngTemplateOutletContext;\n }\n }\n}\nNgTemplateOutlet.ɵfac = function NgTemplateOutlet_Factory(t) { return new (t || NgTemplateOutlet)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef)); };\nNgTemplateOutlet.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgTemplateOutlet, selectors: [[\"\", \"ngTemplateOutlet\", \"\"]], inputs: { ngTemplateOutletContext: \"ngTemplateOutletContext\", ngTemplateOutlet: \"ngTemplateOutlet\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\nNgTemplateOutlet.ctorParameters = () => [\n { type: ViewContainerRef }\n];\nNgTemplateOutlet.propDecorators = {\n ngTemplateOutletContext: [{ type: Input }],\n ngTemplateOutlet: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgTemplateOutlet, [{\n type: Directive,\n args: [{ selector: '[ngTemplateOutlet]' }]\n }], function () { return [{ type: ɵngcc0.ViewContainerRef }]; }, { ngTemplateOutletContext: [{\n type: Input\n }], ngTemplateOutlet: [{\n type: Input\n }] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A collection of Angular directives that are likely to be used in each and every Angular\n * application.\n */\nconst COMMON_DIRECTIVES = [\n NgClass,\n NgComponentOutlet,\n NgForOf,\n NgIf,\n NgTemplateOutlet,\n NgStyle,\n NgSwitch,\n NgSwitchCase,\n NgSwitchDefault,\n NgPlural,\n NgPluralCase,\n];\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction invalidPipeArgumentError(type, value) {\n return Error(`InvalidPipeArgument: '${value}' for pipe '${ɵstringify(type)}'`);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass SubscribableStrategy {\n createSubscription(async, updateLatestValue) {\n return async.subscribe({\n next: updateLatestValue,\n error: (e) => {\n throw e;\n }\n });\n }\n dispose(subscription) {\n subscription.unsubscribe();\n }\n onDestroy(subscription) {\n subscription.unsubscribe();\n }\n}\nclass PromiseStrategy {\n createSubscription(async, updateLatestValue) {\n return async.then(updateLatestValue, e => {\n throw e;\n });\n }\n dispose(subscription) { }\n onDestroy(subscription) { }\n}\nconst _promiseStrategy = new PromiseStrategy();\nconst _subscribableStrategy = new SubscribableStrategy();\n/**\n * @ngModule CommonModule\n * @description\n *\n * Unwraps a value from an asynchronous primitive.\n *\n * The `async` pipe subscribes to an `Observable` or `Promise` and returns the latest value it has\n * emitted. When a new value is emitted, the `async` pipe marks the component to be checked for\n * changes. When the component gets destroyed, the `async` pipe unsubscribes automatically to avoid\n * potential memory leaks. When the reference of the expression changes, the `async` pipe\n * automatically unsubscribes from the old `Observable` or `Promise` and subscribes to the new one.\n *\n * @usageNotes\n *\n * ### Examples\n *\n * This example binds a `Promise` to the view. Clicking the `Resolve` button resolves the\n * promise.\n *\n * {@example common/pipes/ts/async_pipe.ts region='AsyncPipePromise'}\n *\n * It's also possible to use `async` with Observables. The example below binds the `time` Observable\n * to the view. The Observable continuously updates the view with the current time.\n *\n * {@example common/pipes/ts/async_pipe.ts region='AsyncPipeObservable'}\n *\n * @publicApi\n */\nclass AsyncPipe {\n constructor(_ref) {\n this._ref = _ref;\n this._latestValue = null;\n this._subscription = null;\n this._obj = null;\n this._strategy = null;\n }\n ngOnDestroy() {\n if (this._subscription) {\n this._dispose();\n }\n }\n transform(obj) {\n if (!this._obj) {\n if (obj) {\n this._subscribe(obj);\n }\n return this._latestValue;\n }\n if (obj !== this._obj) {\n this._dispose();\n return this.transform(obj);\n }\n return this._latestValue;\n }\n _subscribe(obj) {\n this._obj = obj;\n this._strategy = this._selectStrategy(obj);\n this._subscription = this._strategy.createSubscription(obj, (value) => this._updateLatestValue(obj, value));\n }\n _selectStrategy(obj) {\n if (ɵisPromise(obj)) {\n return _promiseStrategy;\n }\n if (ɵisSubscribable(obj)) {\n return _subscribableStrategy;\n }\n throw invalidPipeArgumentError(AsyncPipe, obj);\n }\n _dispose() {\n this._strategy.dispose(this._subscription);\n this._latestValue = null;\n this._subscription = null;\n this._obj = null;\n }\n _updateLatestValue(async, value) {\n if (async === this._obj) {\n this._latestValue = value;\n this._ref.markForCheck();\n }\n }\n}\nAsyncPipe.ɵfac = function AsyncPipe_Factory(t) { return new (t || AsyncPipe)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef, 16)); };\nAsyncPipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"async\", type: AsyncPipe, pure: false });\nAsyncPipe.ctorParameters = () => [\n { type: ChangeDetectorRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AsyncPipe, [{\n type: Pipe,\n args: [{ name: 'async', pure: false }]\n }], function () { return [{ type: ɵngcc0.ChangeDetectorRef }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Transforms text to all lower case.\n *\n * @see `UpperCasePipe`\n * @see `TitleCasePipe`\n * @usageNotes\n *\n * The following example defines a view that allows the user to enter\n * text, and then uses the pipe to convert the input text to all lower case.\n *\n * \n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass LowerCasePipe {\n transform(value) {\n if (value == null)\n return null;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(LowerCasePipe, value);\n }\n return value.toLowerCase();\n }\n}\nLowerCasePipe.ɵfac = function LowerCasePipe_Factory(t) { return new (t || LowerCasePipe)(); };\nLowerCasePipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"lowercase\", type: LowerCasePipe, pure: true });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LowerCasePipe, [{\n type: Pipe,\n args: [{ name: 'lowercase' }]\n }], null, null); })();\n//\n// Regex below matches any Unicode word and number compatible with ES5. In ES2018 the same result\n// can be achieved by using /[0-9\\p{L}]\\S*/gu and also known as Unicode Property Escapes\n// (https://2ality.com/2017/07/regexp-unicode-property-escapes.html). Since there is no\n// transpilation of this functionality down to ES5 without external tool, the only solution is\n// to use already transpiled form. Example can be found here -\n// https://mothereff.in/regexpu#input=var+regex+%3D+%2F%5B0-9%5Cp%7BL%7D%5D%5CS*%2Fgu%3B%0A%0A&unicodePropertyEscape=1\n//\nconst unicodeWordMatch = /(?:[0-9A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\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\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\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\\u0AF9\\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-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\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-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\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-\\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-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\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]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF40\\uDF42-\\uDF49\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD23\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF45\\uDF70-\\uDF81\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDEB8\\uDF00-\\uDF1A\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCDF\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDEE0-\\uDEF2\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE70-\\uDEBE\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE7F\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD837[\\uDF00-\\uDF1E]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB]|\\uD839[\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43\\uDD4B]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF38\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A])\\S*/g;\n/**\n * Transforms text to title case.\n * Capitalizes the first letter of each word and transforms the\n * rest of the word to lower case.\n * Words are delimited by any whitespace character, such as a space, tab, or line-feed character.\n *\n * @see `LowerCasePipe`\n * @see `UpperCasePipe`\n *\n * @usageNotes\n * The following example shows the result of transforming various strings into title case.\n *\n * \n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass TitleCasePipe {\n transform(value) {\n if (value == null)\n return null;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(TitleCasePipe, value);\n }\n return value.replace(unicodeWordMatch, (txt => txt[0].toUpperCase() + txt.substr(1).toLowerCase()));\n }\n}\nTitleCasePipe.ɵfac = function TitleCasePipe_Factory(t) { return new (t || TitleCasePipe)(); };\nTitleCasePipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"titlecase\", type: TitleCasePipe, pure: true });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TitleCasePipe, [{\n type: Pipe,\n args: [{ name: 'titlecase' }]\n }], null, null); })();\n/**\n * Transforms text to all upper case.\n * @see `LowerCasePipe`\n * @see `TitleCasePipe`\n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass UpperCasePipe {\n transform(value) {\n if (value == null)\n return null;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(UpperCasePipe, value);\n }\n return value.toUpperCase();\n }\n}\nUpperCasePipe.ɵfac = function UpperCasePipe_Factory(t) { return new (t || UpperCasePipe)(); };\nUpperCasePipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"uppercase\", type: UpperCasePipe, pure: true });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(UpperCasePipe, [{\n type: Pipe,\n args: [{ name: 'uppercase' }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// clang-format off\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a date value according to locale rules.\n *\n * `DatePipe` is executed only when it detects a pure change to the input value.\n * A pure change is either a change to a primitive input value\n * (such as `String`, `Number`, `Boolean`, or `Symbol`),\n * or a changed object reference (such as `Date`, `Array`, `Function`, or `Object`).\n *\n * Note that mutating a `Date` object does not cause the pipe to be rendered again.\n * To ensure that the pipe is executed, you must create a new `Date` object.\n *\n * Only the `en-US` locale data comes with Angular. To localize dates\n * in another language, you must import the corresponding locale data.\n * See the [I18n guide](guide/i18n-common-format-data-locale) for more information.\n *\n * @see `formatDate()`\n *\n *\n * @usageNotes\n *\n * The result of this pipe is not reevaluated when the input is mutated. To avoid the need to\n * reformat the date on every change-detection cycle, treat the date as an immutable object\n * and change the reference when the pipe needs to run again.\n *\n * ### Pre-defined format options\n *\n * | Option | Equivalent to | Examples (given in `en-US` locale) |\n * |---------------|-------------------------------------|-------------------------------------------------|\n * | `'short'` | `'M/d/yy, h:mm a'` | `6/15/15, 9:03 AM` |\n * | `'medium'` | `'MMM d, y, h:mm:ss a'` | `Jun 15, 2015, 9:03:01 AM` |\n * | `'long'` | `'MMMM d, y, h:mm:ss a z'` | `June 15, 2015 at 9:03:01 AM GMT+1` |\n * | `'full'` | `'EEEE, MMMM d, y, h:mm:ss a zzzz'` | `Monday, June 15, 2015 at 9:03:01 AM GMT+01:00` |\n * | `'shortDate'` | `'M/d/yy'` | `6/15/15` |\n * | `'mediumDate'`| `'MMM d, y'` | `Jun 15, 2015` |\n * | `'longDate'` | `'MMMM d, y'` | `June 15, 2015` |\n * | `'fullDate'` | `'EEEE, MMMM d, y'` | `Monday, June 15, 2015` |\n * | `'shortTime'` | `'h:mm a'` | `9:03 AM` |\n * | `'mediumTime'`| `'h:mm:ss a'` | `9:03:01 AM` |\n * | `'longTime'` | `'h:mm:ss a z'` | `9:03:01 AM GMT+1` |\n * | `'fullTime'` | `'h:mm:ss a zzzz'` | `9:03:01 AM GMT+01:00` |\n *\n * ### Custom format options\n *\n * You can construct a format string using symbols to specify the components\n * of a date-time value, as described in the following table.\n * Format details depend on the locale.\n * Fields marked with (*) are only available in the extra data set for the given locale.\n *\n * | Field type | Format | Description | Example Value |\n * |-------------------- |-------------|---------------------------------------------------------------|------------------------------------------------------------|\n * | Era | G, GG & GGG | Abbreviated | AD |\n * | | GGGG | Wide | Anno Domini |\n * | | GGGGG | Narrow | A |\n * | Year | y | Numeric: minimum digits | 2, 20, 201, 2017, 20173 |\n * | | yy | Numeric: 2 digits + zero padded | 02, 20, 01, 17, 73 |\n * | | yyy | Numeric: 3 digits + zero padded | 002, 020, 201, 2017, 20173 |\n * | | yyyy | Numeric: 4 digits or more + zero padded | 0002, 0020, 0201, 2017, 20173 |\n * | Week-numbering year | Y | Numeric: minimum digits | 2, 20, 201, 2017, 20173 |\n * | | YY | Numeric: 2 digits + zero padded | 02, 20, 01, 17, 73 |\n * | | YYY | Numeric: 3 digits + zero padded | 002, 020, 201, 2017, 20173 |\n * | | YYYY | Numeric: 4 digits or more + zero padded | 0002, 0020, 0201, 2017, 20173 |\n * | Month | M | Numeric: 1 digit | 9, 12 |\n * | | MM | Numeric: 2 digits + zero padded | 09, 12 |\n * | | MMM | Abbreviated | Sep |\n * | | MMMM | Wide | September |\n * | | MMMMM | Narrow | S |\n * | Month standalone | L | Numeric: 1 digit | 9, 12 |\n * | | LL | Numeric: 2 digits + zero padded | 09, 12 |\n * | | LLL | Abbreviated | Sep |\n * | | LLLL | Wide | September |\n * | | LLLLL | Narrow | S |\n * | Week of year | w | Numeric: minimum digits | 1... 53 |\n * | | ww | Numeric: 2 digits + zero padded | 01... 53 |\n * | Week of month | W | Numeric: 1 digit | 1... 5 |\n * | Day of month | d | Numeric: minimum digits | 1 |\n * | | dd | Numeric: 2 digits + zero padded | 01 |\n * | Week day | E, EE & EEE | Abbreviated | Tue |\n * | | EEEE | Wide | Tuesday |\n * | | EEEEE | Narrow | T |\n * | | EEEEEE | Short | Tu |\n * | Week day standalone | c, cc | Numeric: 1 digit | 2 |\n * | | ccc | Abbreviated | Tue |\n * | | cccc | Wide | Tuesday |\n * | | ccccc | Narrow | T |\n * | | cccccc | Short | Tu |\n * | Period | a, aa & aaa | Abbreviated | am/pm or AM/PM |\n * | | aaaa | Wide (fallback to `a` when missing) | ante meridiem/post meridiem |\n * | | aaaaa | Narrow | a/p |\n * | Period* | B, BB & BBB | Abbreviated | mid. |\n * | | BBBB | Wide | am, pm, midnight, noon, morning, afternoon, evening, night |\n * | | BBBBB | Narrow | md |\n * | Period standalone* | b, bb & bbb | Abbreviated | mid. |\n * | | bbbb | Wide | am, pm, midnight, noon, morning, afternoon, evening, night |\n * | | bbbbb | Narrow | md |\n * | Hour 1-12 | h | Numeric: minimum digits | 1, 12 |\n * | | hh | Numeric: 2 digits + zero padded | 01, 12 |\n * | Hour 0-23 | H | Numeric: minimum digits | 0, 23 |\n * | | HH | Numeric: 2 digits + zero padded | 00, 23 |\n * | Minute | m | Numeric: minimum digits | 8, 59 |\n * | | mm | Numeric: 2 digits + zero padded | 08, 59 |\n * | Second | s | Numeric: minimum digits | 0... 59 |\n * | | ss | Numeric: 2 digits + zero padded | 00... 59 |\n * | Fractional seconds | S | Numeric: 1 digit | 0... 9 |\n * | | SS | Numeric: 2 digits + zero padded | 00... 99 |\n * | | SSS | Numeric: 3 digits + zero padded (= milliseconds) | 000... 999 |\n * | Zone | z, zz & zzz | Short specific non location format (fallback to O) | GMT-8 |\n * | | zzzz | Long specific non location format (fallback to OOOO) | GMT-08:00 |\n * | | Z, ZZ & ZZZ | ISO8601 basic format | -0800 |\n * | | ZZZZ | Long localized GMT format | GMT-8:00 |\n * | | ZZZZZ | ISO8601 extended format + Z indicator for offset 0 (= XXXXX) | -08:00 |\n * | | O, OO & OOO | Short localized GMT format | GMT-8 |\n * | | OOOO | Long localized GMT format | GMT-08:00 |\n *\n *\n * ### Format examples\n *\n * These examples transform a date into various formats,\n * assuming that `dateObj` is a JavaScript `Date` object for\n * year: 2015, month: 6, day: 15, hour: 21, minute: 43, second: 11,\n * given in the local time for the `en-US` locale.\n *\n * ```\n * {{ dateObj | date }} // output is 'Jun 15, 2015'\n * {{ dateObj | date:'medium' }} // output is 'Jun 15, 2015, 9:43:11 PM'\n * {{ dateObj | date:'shortTime' }} // output is '9:43 PM'\n * {{ dateObj | date:'mm:ss' }} // output is '43:11'\n * ```\n *\n * ### Usage example\n *\n * The following component uses a date pipe to display the current date in different formats.\n *\n * ```\n * @Component({\n * selector: 'date-pipe',\n * template: `
    \n *

    Today is {{today | date}}

    \n *

    Or if you prefer, {{today | date:'fullDate'}}

    \n *

    The time is {{today | date:'h:mm a z'}}

    \n *
    `\n * })\n * // Get the current date and time as a date-time value.\n * export class DatePipeComponent {\n * today: number = Date.now();\n * }\n * ```\n *\n * @publicApi\n */\n// clang-format on\nclass DatePipe {\n constructor(locale) {\n this.locale = locale;\n }\n transform(value, format = 'mediumDate', timezone, locale) {\n if (value == null || value === '' || value !== value)\n return null;\n try {\n return formatDate(value, format, locale || this.locale, timezone);\n }\n catch (error) {\n throw invalidPipeArgumentError(DatePipe, error.message);\n }\n }\n}\nDatePipe.ɵfac = function DatePipe_Factory(t) { return new (t || DatePipe)(ɵngcc0.ɵɵdirectiveInject(LOCALE_ID, 16)); };\nDatePipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"date\", type: DatePipe, pure: true });\nDatePipe.ctorParameters = () => [\n { type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DatePipe, [{\n type: Pipe,\n args: [{ name: 'date', pure: true }]\n }], function () { return [{ type: String, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst _INTERPOLATION_REGEXP = /#/g;\n/**\n * @ngModule CommonModule\n * @description\n *\n * Maps a value to a string that pluralizes the value according to locale rules.\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/pipes/ts/i18n_pipe.ts region='I18nPluralPipeComponent'}\n *\n * @publicApi\n */\nclass I18nPluralPipe {\n constructor(_localization) {\n this._localization = _localization;\n }\n /**\n * @param value the number to be formatted\n * @param pluralMap an object that mimics the ICU format, see\n * http://userguide.icu-project.org/formatparse/messages.\n * @param locale a `string` defining the locale to use (uses the current {@link LOCALE_ID} by\n * default).\n */\n transform(value, pluralMap, locale) {\n if (value == null)\n return '';\n if (typeof pluralMap !== 'object' || pluralMap === null) {\n throw invalidPipeArgumentError(I18nPluralPipe, pluralMap);\n }\n const key = getPluralCategory(value, Object.keys(pluralMap), this._localization, locale);\n return pluralMap[key].replace(_INTERPOLATION_REGEXP, value.toString());\n }\n}\nI18nPluralPipe.ɵfac = function I18nPluralPipe_Factory(t) { return new (t || I18nPluralPipe)(ɵngcc0.ɵɵdirectiveInject(NgLocalization, 16)); };\nI18nPluralPipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"i18nPlural\", type: I18nPluralPipe, pure: true });\nI18nPluralPipe.ctorParameters = () => [\n { type: NgLocalization }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(I18nPluralPipe, [{\n type: Pipe,\n args: [{ name: 'i18nPlural', pure: true }]\n }], function () { return [{ type: NgLocalization }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Generic selector that displays the string that matches the current value.\n *\n * If none of the keys of the `mapping` match the `value`, then the content\n * of the `other` key is returned when present, otherwise an empty string is returned.\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/pipes/ts/i18n_pipe.ts region='I18nSelectPipeComponent'}\n *\n * @publicApi\n */\nclass I18nSelectPipe {\n /**\n * @param value a string to be internationalized.\n * @param mapping an object that indicates the text that should be displayed\n * for different values of the provided `value`.\n */\n transform(value, mapping) {\n if (value == null)\n return '';\n if (typeof mapping !== 'object' || typeof value !== 'string') {\n throw invalidPipeArgumentError(I18nSelectPipe, mapping);\n }\n if (mapping.hasOwnProperty(value)) {\n return mapping[value];\n }\n if (mapping.hasOwnProperty('other')) {\n return mapping['other'];\n }\n return '';\n }\n}\nI18nSelectPipe.ɵfac = function I18nSelectPipe_Factory(t) { return new (t || I18nSelectPipe)(); };\nI18nSelectPipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"i18nSelect\", type: I18nSelectPipe, pure: true });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(I18nSelectPipe, [{\n type: Pipe,\n args: [{ name: 'i18nSelect', pure: true }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Converts a value into its JSON-format representation. Useful for debugging.\n *\n * @usageNotes\n *\n * The following component uses a JSON pipe to convert an object\n * to JSON format, and displays the string in both formats for comparison.\n *\n * {@example common/pipes/ts/json_pipe.ts region='JsonPipe'}\n *\n * @publicApi\n */\nclass JsonPipe {\n /**\n * @param value A value of any type to convert into a JSON-format string.\n */\n transform(value) {\n return JSON.stringify(value, null, 2);\n }\n}\nJsonPipe.ɵfac = function JsonPipe_Factory(t) { return new (t || JsonPipe)(); };\nJsonPipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"json\", type: JsonPipe, pure: false });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(JsonPipe, [{\n type: Pipe,\n args: [{ name: 'json', pure: false }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction makeKeyValuePair(key, value) {\n return { key: key, value: value };\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Transforms Object or Map into an array of key value pairs.\n *\n * The output array will be ordered by keys.\n * By default the comparator will be by Unicode point value.\n * You can optionally pass a compareFn if your keys are complex types.\n *\n * @usageNotes\n * ### Examples\n *\n * This examples show how an Object or a Map can be iterated by ngFor with the use of this\n * keyvalue pipe.\n *\n * {@example common/pipes/ts/keyvalue_pipe.ts region='KeyValuePipe'}\n *\n * @publicApi\n */\nclass KeyValuePipe {\n constructor(differs) {\n this.differs = differs;\n this.keyValues = [];\n this.compareFn = defaultComparator;\n }\n transform(input, compareFn = defaultComparator) {\n if (!input || (!(input instanceof Map) && typeof input !== 'object')) {\n return null;\n }\n if (!this.differ) {\n // make a differ for whatever type we've been passed in\n this.differ = this.differs.find(input).create();\n }\n const differChanges = this.differ.diff(input);\n const compareFnChanged = compareFn !== this.compareFn;\n if (differChanges) {\n this.keyValues = [];\n differChanges.forEachItem((r) => {\n this.keyValues.push(makeKeyValuePair(r.key, r.currentValue));\n });\n }\n if (differChanges || compareFnChanged) {\n this.keyValues.sort(compareFn);\n this.compareFn = compareFn;\n }\n return this.keyValues;\n }\n}\nKeyValuePipe.ɵfac = function KeyValuePipe_Factory(t) { return new (t || KeyValuePipe)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.KeyValueDiffers, 16)); };\nKeyValuePipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"keyvalue\", type: KeyValuePipe, pure: false });\nKeyValuePipe.ctorParameters = () => [\n { type: KeyValueDiffers }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(KeyValuePipe, [{\n type: Pipe,\n args: [{ name: 'keyvalue', pure: false }]\n }], function () { return [{ type: ɵngcc0.KeyValueDiffers }]; }, null); })();\nfunction defaultComparator(keyValueA, keyValueB) {\n const a = keyValueA.key;\n const b = keyValueB.key;\n // if same exit with 0;\n if (a === b)\n return 0;\n // make sure that undefined are at the end of the sort.\n if (a === undefined)\n return 1;\n if (b === undefined)\n return -1;\n // make sure that nulls are at the end of the sort.\n if (a === null)\n return 1;\n if (b === null)\n return -1;\n if (typeof a == 'string' && typeof b == 'string') {\n return a < b ? -1 : 1;\n }\n if (typeof a == 'number' && typeof b == 'number') {\n return a - b;\n }\n if (typeof a == 'boolean' && typeof b == 'boolean') {\n return a < b ? -1 : 1;\n }\n // `a` and `b` are of different types. Compare their string values.\n const aString = String(a);\n const bString = String(b);\n return aString == bString ? 0 : aString < bString ? -1 : 1;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a value according to digit options and locale rules.\n * Locale determines group sizing and separator,\n * decimal point character, and other locale-specific configurations.\n *\n * @see `formatNumber()`\n *\n * @usageNotes\n *\n * ### digitsInfo\n *\n * The value's decimal representation is specified by the `digitsInfo`\n * parameter, written in the following format:
    \n *\n * ```\n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}\n * ```\n *\n * - `minIntegerDigits`:\n * The minimum number of integer digits before the decimal point.\n * Default is 1.\n *\n * - `minFractionDigits`:\n * The minimum number of digits after the decimal point.\n * Default is 0.\n *\n * - `maxFractionDigits`:\n * The maximum number of digits after the decimal point.\n * Default is 3.\n *\n * If the formatted value is truncated it will be rounded using the \"to-nearest\" method:\n *\n * ```\n * {{3.6 | number: '1.0-0'}}\n * \n *\n * {{-3.6 | number:'1.0-0'}}\n * \n * ```\n *\n * ### locale\n *\n * `locale` will format a value according to locale rules.\n * Locale determines group sizing and separator,\n * decimal point character, and other locale-specific configurations.\n *\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n *\n * See [Setting your app locale](guide/i18n-common-locale-id).\n *\n * ### Example\n *\n * The following code shows how the pipe transforms values\n * according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * \n *\n * @publicApi\n */\nclass DecimalPipe {\n constructor(_locale) {\n this._locale = _locale;\n }\n /**\n * @param value The value to be formatted.\n * @param digitsInfo Sets digit and decimal representation.\n * [See more](#digitsinfo).\n * @param locale Specifies what locale format rules to use.\n * [See more](#locale).\n */\n transform(value, digitsInfo, locale) {\n if (!isValue(value))\n return null;\n locale = locale || this._locale;\n try {\n const num = strToNumber(value);\n return formatNumber(num, locale, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(DecimalPipe, error.message);\n }\n }\n}\nDecimalPipe.ɵfac = function DecimalPipe_Factory(t) { return new (t || DecimalPipe)(ɵngcc0.ɵɵdirectiveInject(LOCALE_ID, 16)); };\nDecimalPipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"number\", type: DecimalPipe, pure: true });\nDecimalPipe.ctorParameters = () => [\n { type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DecimalPipe, [{\n type: Pipe,\n args: [{ name: 'number' }]\n }], function () { return [{ type: String, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; }, null); })();\n/**\n * @ngModule CommonModule\n * @description\n *\n * Transforms a number to a percentage\n * string, formatted according to locale rules that determine group sizing and\n * separator, decimal-point character, and other locale-specific\n * configurations.\n *\n * @see `formatPercent()`\n *\n * @usageNotes\n * The following code shows how the pipe transforms numbers\n * into text strings, according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * \n *\n * @publicApi\n */\nclass PercentPipe {\n constructor(_locale) {\n this._locale = _locale;\n }\n /**\n *\n * @param value The number to be formatted as a percentage.\n * @param digitsInfo Decimal representation options, specified by a string\n * in the following format:
    \n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}.\n * - `minIntegerDigits`: The minimum number of integer digits before the decimal point.\n * Default is `1`.\n * - `minFractionDigits`: The minimum number of digits after the decimal point.\n * Default is `0`.\n * - `maxFractionDigits`: The maximum number of digits after the decimal point.\n * Default is `0`.\n * @param locale A locale code for the locale format rules to use.\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n * See [Setting your app locale](guide/i18n-common-locale-id).\n */\n transform(value, digitsInfo, locale) {\n if (!isValue(value))\n return null;\n locale = locale || this._locale;\n try {\n const num = strToNumber(value);\n return formatPercent(num, locale, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(PercentPipe, error.message);\n }\n }\n}\nPercentPipe.ɵfac = function PercentPipe_Factory(t) { return new (t || PercentPipe)(ɵngcc0.ɵɵdirectiveInject(LOCALE_ID, 16)); };\nPercentPipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"percent\", type: PercentPipe, pure: true });\nPercentPipe.ctorParameters = () => [\n { type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PercentPipe, [{\n type: Pipe,\n args: [{ name: 'percent' }]\n }], function () { return [{ type: String, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; }, null); })();\n/**\n * @ngModule CommonModule\n * @description\n *\n * Transforms a number to a currency string, formatted according to locale rules\n * that determine group sizing and separator, decimal-point character,\n * and other locale-specific configurations.\n *\n * {@a currency-code-deprecation}\n *
    \n *\n * **Deprecation notice:**\n *\n * The default currency code is currently always `USD` but this is deprecated from v9.\n *\n * **In v11 the default currency code will be taken from the current locale identified by\n * the `LOCALE_ID` token. See the [i18n guide](guide/i18n-common-locale-id) for\n * more information.**\n *\n * If you need the previous behavior then set it by creating a `DEFAULT_CURRENCY_CODE` provider in\n * your application `NgModule`:\n *\n * ```ts\n * {provide: DEFAULT_CURRENCY_CODE, useValue: 'USD'}\n * ```\n *\n *
    \n *\n * @see `getCurrencySymbol()`\n * @see `formatCurrency()`\n *\n * @usageNotes\n * The following code shows how the pipe transforms numbers\n * into text strings, according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * \n *\n * @publicApi\n */\nclass CurrencyPipe {\n constructor(_locale, _defaultCurrencyCode = 'USD') {\n this._locale = _locale;\n this._defaultCurrencyCode = _defaultCurrencyCode;\n }\n /**\n *\n * @param value The number to be formatted as currency.\n * @param currencyCode The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code,\n * such as `USD` for the US dollar and `EUR` for the euro. The default currency code can be\n * configured using the `DEFAULT_CURRENCY_CODE` injection token.\n * @param display The format for the currency indicator. One of the following:\n * - `code`: Show the code (such as `USD`).\n * - `symbol`(default): Show the symbol (such as `$`).\n * - `symbol-narrow`: Use the narrow symbol for locales that have two symbols for their\n * currency.\n * For example, the Canadian dollar CAD has the symbol `CA$` and the symbol-narrow `$`. If the\n * locale has no narrow symbol, uses the standard symbol for the locale.\n * - String: Use the given string value instead of a code or a symbol.\n * For example, an empty string will suppress the currency & symbol.\n * - Boolean (marked deprecated in v5): `true` for symbol and false for `code`.\n *\n * @param digitsInfo Decimal representation options, specified by a string\n * in the following format:
    \n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}.\n * - `minIntegerDigits`: The minimum number of integer digits before the decimal point.\n * Default is `1`.\n * - `minFractionDigits`: The minimum number of digits after the decimal point.\n * Default is `2`.\n * - `maxFractionDigits`: The maximum number of digits after the decimal point.\n * Default is `2`.\n * If not provided, the number will be formatted with the proper amount of digits,\n * depending on what the [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) specifies.\n * For example, the Canadian dollar has 2 digits, whereas the Chilean peso has none.\n * @param locale A locale code for the locale format rules to use.\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n * See [Setting your app locale](guide/i18n-common-locale-id).\n */\n transform(value, currencyCode = this._defaultCurrencyCode, display = 'symbol', digitsInfo, locale) {\n if (!isValue(value))\n return null;\n locale = locale || this._locale;\n if (typeof display === 'boolean') {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && console && console.warn) {\n console.warn(`Warning: the currency pipe has been changed in Angular v5. The symbolDisplay option (third parameter) is now a string instead of a boolean. The accepted values are \"code\", \"symbol\" or \"symbol-narrow\".`);\n }\n display = display ? 'symbol' : 'code';\n }\n let currency = currencyCode || this._defaultCurrencyCode;\n if (display !== 'code') {\n if (display === 'symbol' || display === 'symbol-narrow') {\n currency = getCurrencySymbol(currency, display === 'symbol' ? 'wide' : 'narrow', locale);\n }\n else {\n currency = display;\n }\n }\n try {\n const num = strToNumber(value);\n return formatCurrency(num, locale, currency, currencyCode, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(CurrencyPipe, error.message);\n }\n }\n}\nCurrencyPipe.ɵfac = function CurrencyPipe_Factory(t) { return new (t || CurrencyPipe)(ɵngcc0.ɵɵdirectiveInject(LOCALE_ID, 16), ɵngcc0.ɵɵdirectiveInject(DEFAULT_CURRENCY_CODE, 16)); };\nCurrencyPipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"currency\", type: CurrencyPipe, pure: true });\nCurrencyPipe.ctorParameters = () => [\n { type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] },\n { type: String, decorators: [{ type: Inject, args: [DEFAULT_CURRENCY_CODE,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CurrencyPipe, [{\n type: Pipe,\n args: [{ name: 'currency' }]\n }], function () { return [{ type: String, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }, { type: String, decorators: [{\n type: Inject,\n args: [DEFAULT_CURRENCY_CODE]\n }] }]; }, null); })();\nfunction isValue(value) {\n return !(value == null || value === '' || value !== value);\n}\n/**\n * Transforms a string into a number (if needed).\n */\nfunction strToNumber(value) {\n // Convert strings to numbers\n if (typeof value === 'string' && !isNaN(Number(value) - parseFloat(value))) {\n return Number(value);\n }\n if (typeof value !== 'number') {\n throw new Error(`${value} is not a number`);\n }\n return value;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Creates a new `Array` or `String` containing a subset (slice) of the elements.\n *\n * @usageNotes\n *\n * All behavior is based on the expected behavior of the JavaScript API `Array.prototype.slice()`\n * and `String.prototype.slice()`.\n *\n * When operating on an `Array`, the returned `Array` is always a copy even when all\n * the elements are being returned.\n *\n * When operating on a blank value, the pipe returns the blank value.\n *\n * ### List Example\n *\n * This `ngFor` example:\n *\n * {@example common/pipes/ts/slice_pipe.ts region='SlicePipe_list'}\n *\n * produces the following:\n *\n * ```html\n *
  • b
  • \n *
  • c
  • \n * ```\n *\n * ### String Examples\n *\n * {@example common/pipes/ts/slice_pipe.ts region='SlicePipe_string'}\n *\n * @publicApi\n */\nclass SlicePipe {\n transform(value, start, end) {\n if (value == null)\n return null;\n if (!this.supports(value)) {\n throw invalidPipeArgumentError(SlicePipe, value);\n }\n return value.slice(start, end);\n }\n supports(obj) {\n return typeof obj === 'string' || Array.isArray(obj);\n }\n}\nSlicePipe.ɵfac = function SlicePipe_Factory(t) { return new (t || SlicePipe)(); };\nSlicePipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"slice\", type: SlicePipe, pure: false });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SlicePipe, [{\n type: Pipe,\n args: [{ name: 'slice', pure: false }]\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A collection of Angular pipes that are likely to be used in each and every application.\n */\nconst COMMON_PIPES = [\n AsyncPipe,\n UpperCasePipe,\n LowerCasePipe,\n JsonPipe,\n SlicePipe,\n DecimalPipe,\n PercentPipe,\n TitleCasePipe,\n CurrencyPipe,\n DatePipe,\n I18nPluralPipe,\n I18nSelectPipe,\n KeyValuePipe,\n];\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Note: This does not contain the location providers,\n// as they need some platform specific implementations to work.\n/**\n * Exports all the basic Angular directives and pipes,\n * such as `NgIf`, `NgForOf`, `DecimalPipe`, and so on.\n * Re-exported by `BrowserModule`, which is included automatically in the root\n * `AppModule` when you create a new app with the CLI `new` command.\n *\n * * The `providers` options configure the NgModule's injector to provide\n * localization dependencies to members.\n * * The `exports` options make the declared directives and pipes available for import\n * by other NgModules.\n *\n * @publicApi\n */\nclass CommonModule {\n}\nCommonModule.ɵfac = function CommonModule_Factory(t) { return new (t || CommonModule)(); };\nCommonModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: CommonModule });\nCommonModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [\n { provide: NgLocalization, useClass: NgLocaleLocalization },\n ] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CommonModule, [{\n type: NgModule,\n args: [{\n declarations: [COMMON_DIRECTIVES, COMMON_PIPES],\n exports: [COMMON_DIRECTIVES, COMMON_PIPES],\n providers: [\n { provide: NgLocalization, useClass: NgLocaleLocalization },\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(CommonModule, { declarations: [NgClass, NgComponentOutlet, NgForOf, NgIf, NgTemplateOutlet, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgPlural, NgPluralCase, AsyncPipe, UpperCasePipe, LowerCasePipe, JsonPipe, SlicePipe, DecimalPipe, PercentPipe, TitleCasePipe, CurrencyPipe, DatePipe, I18nPluralPipe, I18nSelectPipe, KeyValuePipe], exports: [NgClass, NgComponentOutlet, NgForOf, NgIf, NgTemplateOutlet, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgPlural, NgPluralCase, AsyncPipe, UpperCasePipe, LowerCasePipe, JsonPipe, SlicePipe, DecimalPipe, PercentPipe, TitleCasePipe, CurrencyPipe, DatePipe, I18nPluralPipe, I18nSelectPipe, KeyValuePipe] }); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst PLATFORM_BROWSER_ID = 'browser';\nconst PLATFORM_SERVER_ID = 'server';\nconst PLATFORM_WORKER_APP_ID = 'browserWorkerApp';\nconst PLATFORM_WORKER_UI_ID = 'browserWorkerUi';\n/**\n * Returns whether a platform id represents a browser platform.\n * @publicApi\n */\nfunction isPlatformBrowser(platformId) {\n return platformId === PLATFORM_BROWSER_ID;\n}\n/**\n * Returns whether a platform id represents a server platform.\n * @publicApi\n */\nfunction isPlatformServer(platformId) {\n return platformId === PLATFORM_SERVER_ID;\n}\n/**\n * Returns whether a platform id represents a web worker app platform.\n * @publicApi\n */\nfunction isPlatformWorkerApp(platformId) {\n return platformId === PLATFORM_WORKER_APP_ID;\n}\n/**\n * Returns whether a platform id represents a web worker UI platform.\n * @publicApi\n */\nfunction isPlatformWorkerUi(platformId) {\n return platformId === PLATFORM_WORKER_UI_ID;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nconst VERSION = new Version('12.2.17');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Defines a scroll position manager. Implemented by `BrowserViewportScroller`.\n *\n * @publicApi\n */\nclass ViewportScroller {\n}\n// De-sugared tree-shakable injection\n// See #23917\n/** @nocollapse */\nViewportScroller.ɵprov = ɵɵdefineInjectable({\n token: ViewportScroller,\n providedIn: 'root',\n factory: () => new BrowserViewportScroller(ɵɵinject(DOCUMENT), window)\n});\n/**\n * Manages the scroll position for a browser window.\n */\nclass BrowserViewportScroller {\n constructor(document, window) {\n this.document = document;\n this.window = window;\n this.offset = () => [0, 0];\n }\n /**\n * Configures the top offset used when scrolling to an anchor.\n * @param offset A position in screen coordinates (a tuple with x and y values)\n * or a function that returns the top offset position.\n *\n */\n setOffset(offset) {\n if (Array.isArray(offset)) {\n this.offset = () => offset;\n }\n else {\n this.offset = offset;\n }\n }\n /**\n * Retrieves the current scroll position.\n * @returns The position in screen coordinates.\n */\n getScrollPosition() {\n if (this.supportsScrolling()) {\n return [this.window.pageXOffset, this.window.pageYOffset];\n }\n else {\n return [0, 0];\n }\n }\n /**\n * Sets the scroll position.\n * @param position The new position in screen coordinates.\n */\n scrollToPosition(position) {\n if (this.supportsScrolling()) {\n this.window.scrollTo(position[0], position[1]);\n }\n }\n /**\n * Scrolls to an element and attempts to focus the element.\n *\n * Note that the function name here is misleading in that the target string may be an ID for a\n * non-anchor element.\n *\n * @param target The ID of an element or name of the anchor.\n *\n * @see https://html.spec.whatwg.org/#the-indicated-part-of-the-document\n * @see https://html.spec.whatwg.org/#scroll-to-fragid\n */\n scrollToAnchor(target) {\n if (!this.supportsScrolling()) {\n return;\n }\n const elSelected = findAnchorFromDocument(this.document, target);\n if (elSelected) {\n this.scrollToElement(elSelected);\n // After scrolling to the element, the spec dictates that we follow the focus steps for the\n // target. Rather than following the robust steps, simply attempt focus.\n this.attemptFocus(elSelected);\n }\n }\n /**\n * Disables automatic scroll restoration provided by the browser.\n */\n setHistoryScrollRestoration(scrollRestoration) {\n if (this.supportScrollRestoration()) {\n const history = this.window.history;\n if (history && history.scrollRestoration) {\n history.scrollRestoration = scrollRestoration;\n }\n }\n }\n /**\n * Scrolls to an element using the native offset and the specified offset set on this scroller.\n *\n * The offset can be used when we know that there is a floating header and scrolling naively to an\n * element (ex: `scrollIntoView`) leaves the element hidden behind the floating header.\n */\n scrollToElement(el) {\n const rect = el.getBoundingClientRect();\n const left = rect.left + this.window.pageXOffset;\n const top = rect.top + this.window.pageYOffset;\n const offset = this.offset();\n this.window.scrollTo(left - offset[0], top - offset[1]);\n }\n /**\n * Calls `focus` on the `focusTarget` and returns `true` if the element was focused successfully.\n *\n * If `false`, further steps may be necessary to determine a valid substitute to be focused\n * instead.\n *\n * @see https://html.spec.whatwg.org/#get-the-focusable-area\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLOrForeignElement/focus\n * @see https://html.spec.whatwg.org/#focusable-area\n */\n attemptFocus(focusTarget) {\n focusTarget.focus();\n return this.document.activeElement === focusTarget;\n }\n /**\n * We only support scroll restoration when we can get a hold of window.\n * This means that we do not support this behavior when running in a web worker.\n *\n * Lifting this restriction right now would require more changes in the dom adapter.\n * Since webworkers aren't widely used, we will lift it once RouterScroller is\n * battle-tested.\n */\n supportScrollRestoration() {\n try {\n if (!this.supportsScrolling()) {\n return false;\n }\n // The `scrollRestoration` property could be on the `history` instance or its prototype.\n const scrollRestorationDescriptor = getScrollRestorationProperty(this.window.history) ||\n getScrollRestorationProperty(Object.getPrototypeOf(this.window.history));\n // We can write to the `scrollRestoration` property if it is a writable data field or it has a\n // setter function.\n return !!scrollRestorationDescriptor &&\n !!(scrollRestorationDescriptor.writable || scrollRestorationDescriptor.set);\n }\n catch (_a) {\n return false;\n }\n }\n supportsScrolling() {\n try {\n return !!this.window && !!this.window.scrollTo && 'pageXOffset' in this.window;\n }\n catch (_a) {\n return false;\n }\n }\n}\nfunction getScrollRestorationProperty(obj) {\n return Object.getOwnPropertyDescriptor(obj, 'scrollRestoration');\n}\nfunction findAnchorFromDocument(document, target) {\n const documentResult = document.getElementById(target) || document.getElementsByName(target)[0];\n if (documentResult) {\n return documentResult;\n }\n // `getElementById` and `getElementsByName` won't pierce through the shadow DOM so we\n // have to traverse the DOM manually and do the lookup through the shadow roots.\n if (typeof document.createTreeWalker === 'function' && document.body &&\n (document.body.createShadowRoot || document.body.attachShadow)) {\n const treeWalker = document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT);\n let currentNode = treeWalker.currentNode;\n while (currentNode) {\n const shadowRoot = currentNode.shadowRoot;\n if (shadowRoot) {\n // Note that `ShadowRoot` doesn't support `getElementsByName`\n // so we have to fall back to `querySelector`.\n const result = shadowRoot.getElementById(target) || shadowRoot.querySelector(`[name=\"${target}\"]`);\n if (result) {\n return result;\n }\n }\n currentNode = treeWalker.nextNode();\n }\n }\n return null;\n}\n/**\n * Provides an empty implementation of the viewport scroller.\n */\nclass NullViewportScroller {\n /**\n * Empty implementation\n */\n setOffset(offset) { }\n /**\n * Empty implementation\n */\n getScrollPosition() {\n return [0, 0];\n }\n /**\n * Empty implementation\n */\n scrollToPosition(position) { }\n /**\n * Empty implementation\n */\n scrollToAnchor(anchor) { }\n /**\n * Empty implementation\n */\n setHistoryScrollRestoration(scrollRestoration) { }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A wrapper around the `XMLHttpRequest` constructor.\n *\n * @publicApi\n */\nclass XhrFactory {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// This file only reexports content of the `src` folder. Keep it that way.\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { APP_BASE_HREF, AsyncPipe, CommonModule, CurrencyPipe, DOCUMENT, DatePipe, DecimalPipe, FormStyle, FormatWidth, HashLocationStrategy, I18nPluralPipe, I18nSelectPipe, JsonPipe, KeyValuePipe, LOCATION_INITIALIZED, Location, LocationStrategy, LowerCasePipe, NgClass, NgComponentOutlet, NgForOf, NgForOfContext, NgIf, NgIfContext, NgLocaleLocalization, NgLocalization, NgPlural, NgPluralCase, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet, NumberFormatStyle, NumberSymbol, PathLocationStrategy, PercentPipe, PlatformLocation, Plural, SlicePipe, TitleCasePipe, TranslationWidth, UpperCasePipe, VERSION, ViewportScroller, WeekDay, XhrFactory, formatCurrency, formatDate, formatNumber, formatPercent, getCurrencySymbol, getLocaleCurrencyCode, getLocaleCurrencyName, getLocaleCurrencySymbol, getLocaleDateFormat, getLocaleDateTimeFormat, getLocaleDayNames, getLocaleDayPeriods, getLocaleDirection, getLocaleEraNames, getLocaleExtraDayPeriodRules, getLocaleExtraDayPeriods, getLocaleFirstDayOfWeek, getLocaleId, getLocaleMonthNames, getLocaleNumberFormat, getLocaleNumberSymbol, getLocalePluralCase, getLocaleTimeFormat, getLocaleWeekEndRange, getNumberOfCurrencyDigits, isPlatformBrowser, isPlatformServer, isPlatformWorkerApp, isPlatformWorkerUi, registerLocaleData, BrowserPlatformLocation as ɵBrowserPlatformLocation, DomAdapter as ɵDomAdapter, NullViewportScroller as ɵNullViewportScroller, PLATFORM_BROWSER_ID as ɵPLATFORM_BROWSER_ID, PLATFORM_SERVER_ID as ɵPLATFORM_SERVER_ID, PLATFORM_WORKER_APP_ID as ɵPLATFORM_WORKER_APP_ID, PLATFORM_WORKER_UI_ID as ɵPLATFORM_WORKER_UI_ID, useBrowserPlatformLocation as ɵangular_packages_common_common_a, createBrowserPlatformLocation as ɵangular_packages_common_common_b, createLocation as ɵangular_packages_common_common_c, provideLocationStrategy as ɵangular_packages_common_common_d, COMMON_DIRECTIVES as ɵangular_packages_common_common_e, COMMON_PIPES as ɵangular_packages_common_common_f, getDOM as ɵgetDOM, parseCookieValue as ɵparseCookieValue, setRootDomAdapter as ɵsetRootDomAdapter };\n\n","/**\n * @license Angular v12.2.17\n * (c) 2010-2021 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { DOCUMENT, XhrFactory as XhrFactory$1, ɵparseCookieValue } from '@angular/common';\nimport { Injectable, InjectionToken, Inject, PLATFORM_ID, Injector, NgModule } from '@angular/core';\nimport { of, Observable } from 'rxjs';\nimport { concatMap, filter, map } from 'rxjs/operators';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Transforms an `HttpRequest` into a stream of `HttpEvent`s, one of which will likely be a\n * `HttpResponse`.\n *\n * `HttpHandler` is injectable. When injected, the handler instance dispatches requests to the\n * first interceptor in the chain, which dispatches to the second, etc, eventually reaching the\n * `HttpBackend`.\n *\n * In an `HttpInterceptor`, the `HttpHandler` parameter is the next interceptor in the chain.\n *\n * @publicApi\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\nclass HttpHandler {\n}\n/**\n * A final `HttpHandler` which will dispatch the request via browser HTTP APIs to a backend.\n *\n * Interceptors sit between the `HttpClient` interface and the `HttpBackend`.\n *\n * When injected, `HttpBackend` dispatches requests directly to the backend, without going\n * through the interceptor chain.\n *\n * @publicApi\n */\nclass HttpBackend {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Represents the header configuration options for an HTTP request.\n * Instances are immutable. Modifying methods return a cloned\n * instance with the change. The original object is never changed.\n *\n * @publicApi\n */\nclass HttpHeaders {\n /** Constructs a new HTTP header object with the given values.*/\n constructor(headers) {\n /**\n * Internal map of lowercased header names to the normalized\n * form of the name (the form seen first).\n */\n this.normalizedNames = new Map();\n /**\n * Queued updates to be materialized the next initialization.\n */\n this.lazyUpdate = null;\n if (!headers) {\n this.headers = new Map();\n }\n else if (typeof headers === 'string') {\n this.lazyInit = () => {\n this.headers = new Map();\n headers.split('\\n').forEach(line => {\n const index = line.indexOf(':');\n if (index > 0) {\n const name = line.slice(0, index);\n const key = name.toLowerCase();\n const value = line.slice(index + 1).trim();\n this.maybeSetNormalizedName(name, key);\n if (this.headers.has(key)) {\n this.headers.get(key).push(value);\n }\n else {\n this.headers.set(key, [value]);\n }\n }\n });\n };\n }\n else {\n this.lazyInit = () => {\n this.headers = new Map();\n Object.keys(headers).forEach(name => {\n let values = headers[name];\n const key = name.toLowerCase();\n if (typeof values === 'string') {\n values = [values];\n }\n if (values.length > 0) {\n this.headers.set(key, values);\n this.maybeSetNormalizedName(name, key);\n }\n });\n };\n }\n }\n /**\n * Checks for existence of a given header.\n *\n * @param name The header name to check for existence.\n *\n * @returns True if the header exists, false otherwise.\n */\n has(name) {\n this.init();\n return this.headers.has(name.toLowerCase());\n }\n /**\n * Retrieves the first value of a given header.\n *\n * @param name The header name.\n *\n * @returns The value string if the header exists, null otherwise\n */\n get(name) {\n this.init();\n const values = this.headers.get(name.toLowerCase());\n return values && values.length > 0 ? values[0] : null;\n }\n /**\n * Retrieves the names of the headers.\n *\n * @returns A list of header names.\n */\n keys() {\n this.init();\n return Array.from(this.normalizedNames.values());\n }\n /**\n * Retrieves a list of values for a given header.\n *\n * @param name The header name from which to retrieve values.\n *\n * @returns A string of values if the header exists, null otherwise.\n */\n getAll(name) {\n this.init();\n return this.headers.get(name.toLowerCase()) || null;\n }\n /**\n * Appends a new value to the existing set of values for a header\n * and returns them in a clone of the original instance.\n *\n * @param name The header name for which to append the values.\n * @param value The value to append.\n *\n * @returns A clone of the HTTP headers object with the value appended to the given header.\n */\n append(name, value) {\n return this.clone({ name, value, op: 'a' });\n }\n /**\n * Sets or modifies a value for a given header in a clone of the original instance.\n * If the header already exists, its value is replaced with the given value\n * in the returned object.\n *\n * @param name The header name.\n * @param value The value or values to set or overide for the given header.\n *\n * @returns A clone of the HTTP headers object with the newly set header value.\n */\n set(name, value) {\n return this.clone({ name, value, op: 's' });\n }\n /**\n * Deletes values for a given header in a clone of the original instance.\n *\n * @param name The header name.\n * @param value The value or values to delete for the given header.\n *\n * @returns A clone of the HTTP headers object with the given value deleted.\n */\n delete(name, value) {\n return this.clone({ name, value, op: 'd' });\n }\n maybeSetNormalizedName(name, lcName) {\n if (!this.normalizedNames.has(lcName)) {\n this.normalizedNames.set(lcName, name);\n }\n }\n init() {\n if (!!this.lazyInit) {\n if (this.lazyInit instanceof HttpHeaders) {\n this.copyFrom(this.lazyInit);\n }\n else {\n this.lazyInit();\n }\n this.lazyInit = null;\n if (!!this.lazyUpdate) {\n this.lazyUpdate.forEach(update => this.applyUpdate(update));\n this.lazyUpdate = null;\n }\n }\n }\n copyFrom(other) {\n other.init();\n Array.from(other.headers.keys()).forEach(key => {\n this.headers.set(key, other.headers.get(key));\n this.normalizedNames.set(key, other.normalizedNames.get(key));\n });\n }\n clone(update) {\n const clone = new HttpHeaders();\n clone.lazyInit =\n (!!this.lazyInit && this.lazyInit instanceof HttpHeaders) ? this.lazyInit : this;\n clone.lazyUpdate = (this.lazyUpdate || []).concat([update]);\n return clone;\n }\n applyUpdate(update) {\n const key = update.name.toLowerCase();\n switch (update.op) {\n case 'a':\n case 's':\n let value = update.value;\n if (typeof value === 'string') {\n value = [value];\n }\n if (value.length === 0) {\n return;\n }\n this.maybeSetNormalizedName(update.name, key);\n const base = (update.op === 'a' ? this.headers.get(key) : undefined) || [];\n base.push(...value);\n this.headers.set(key, base);\n break;\n case 'd':\n const toDelete = update.value;\n if (!toDelete) {\n this.headers.delete(key);\n this.normalizedNames.delete(key);\n }\n else {\n let existing = this.headers.get(key);\n if (!existing) {\n return;\n }\n existing = existing.filter(value => toDelete.indexOf(value) === -1);\n if (existing.length === 0) {\n this.headers.delete(key);\n this.normalizedNames.delete(key);\n }\n else {\n this.headers.set(key, existing);\n }\n }\n break;\n }\n }\n /**\n * @internal\n */\n forEach(fn) {\n this.init();\n Array.from(this.normalizedNames.keys())\n .forEach(key => fn(this.normalizedNames.get(key), this.headers.get(key)));\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Provides encoding and decoding of URL parameter and query-string values.\n *\n * Serializes and parses URL parameter keys and values to encode and decode them.\n * If you pass URL query parameters without encoding,\n * the query parameters can be misinterpreted at the receiving end.\n *\n *\n * @publicApi\n */\nclass HttpUrlEncodingCodec {\n /**\n * Encodes a key name for a URL parameter or query-string.\n * @param key The key name.\n * @returns The encoded key name.\n */\n encodeKey(key) {\n return standardEncoding(key);\n }\n /**\n * Encodes the value of a URL parameter or query-string.\n * @param value The value.\n * @returns The encoded value.\n */\n encodeValue(value) {\n return standardEncoding(value);\n }\n /**\n * Decodes an encoded URL parameter or query-string key.\n * @param key The encoded key name.\n * @returns The decoded key name.\n */\n decodeKey(key) {\n return decodeURIComponent(key);\n }\n /**\n * Decodes an encoded URL parameter or query-string value.\n * @param value The encoded value.\n * @returns The decoded value.\n */\n decodeValue(value) {\n return decodeURIComponent(value);\n }\n}\nfunction paramParser(rawParams, codec) {\n const map = new Map();\n if (rawParams.length > 0) {\n // The `window.location.search` can be used while creating an instance of the `HttpParams` class\n // (e.g. `new HttpParams({ fromString: window.location.search })`). The `window.location.search`\n // may start with the `?` char, so we strip it if it's present.\n const params = rawParams.replace(/^\\?/, '').split('&');\n params.forEach((param) => {\n const eqIdx = param.indexOf('=');\n const [key, val] = eqIdx == -1 ?\n [codec.decodeKey(param), ''] :\n [codec.decodeKey(param.slice(0, eqIdx)), codec.decodeValue(param.slice(eqIdx + 1))];\n const list = map.get(key) || [];\n list.push(val);\n map.set(key, list);\n });\n }\n return map;\n}\n/**\n * Encode input string with standard encodeURIComponent and then un-encode specific characters.\n */\nconst STANDARD_ENCODING_REGEX = /%(\\d[a-f0-9])/gi;\nconst STANDARD_ENCODING_REPLACEMENTS = {\n '40': '@',\n '3A': ':',\n '24': '$',\n '2C': ',',\n '3B': ';',\n '2B': '+',\n '3D': '=',\n '3F': '?',\n '2F': '/',\n};\nfunction standardEncoding(v) {\n return encodeURIComponent(v).replace(STANDARD_ENCODING_REGEX, (s, t) => { var _a; return (_a = STANDARD_ENCODING_REPLACEMENTS[t]) !== null && _a !== void 0 ? _a : s; });\n}\nfunction valueToString(value) {\n return `${value}`;\n}\n/**\n * An HTTP request/response body that represents serialized parameters,\n * per the MIME type `application/x-www-form-urlencoded`.\n *\n * This class is immutable; all mutation operations return a new instance.\n *\n * @publicApi\n */\nclass HttpParams {\n constructor(options = {}) {\n this.updates = null;\n this.cloneFrom = null;\n this.encoder = options.encoder || new HttpUrlEncodingCodec();\n if (!!options.fromString) {\n if (!!options.fromObject) {\n throw new Error(`Cannot specify both fromString and fromObject.`);\n }\n this.map = paramParser(options.fromString, this.encoder);\n }\n else if (!!options.fromObject) {\n this.map = new Map();\n Object.keys(options.fromObject).forEach(key => {\n const value = options.fromObject[key];\n this.map.set(key, Array.isArray(value) ? value : [value]);\n });\n }\n else {\n this.map = null;\n }\n }\n /**\n * Reports whether the body includes one or more values for a given parameter.\n * @param param The parameter name.\n * @returns True if the parameter has one or more values,\n * false if it has no value or is not present.\n */\n has(param) {\n this.init();\n return this.map.has(param);\n }\n /**\n * Retrieves the first value for a parameter.\n * @param param The parameter name.\n * @returns The first value of the given parameter,\n * or `null` if the parameter is not present.\n */\n get(param) {\n this.init();\n const res = this.map.get(param);\n return !!res ? res[0] : null;\n }\n /**\n * Retrieves all values for a parameter.\n * @param param The parameter name.\n * @returns All values in a string array,\n * or `null` if the parameter not present.\n */\n getAll(param) {\n this.init();\n return this.map.get(param) || null;\n }\n /**\n * Retrieves all the parameters for this body.\n * @returns The parameter names in a string array.\n */\n keys() {\n this.init();\n return Array.from(this.map.keys());\n }\n /**\n * Appends a new value to existing values for a parameter.\n * @param param The parameter name.\n * @param value The new value to add.\n * @return A new body with the appended value.\n */\n append(param, value) {\n return this.clone({ param, value, op: 'a' });\n }\n /**\n * Constructs a new body with appended values for the given parameter name.\n * @param params parameters and values\n * @return A new body with the new value.\n */\n appendAll(params) {\n const updates = [];\n Object.keys(params).forEach(param => {\n const value = params[param];\n if (Array.isArray(value)) {\n value.forEach(_value => {\n updates.push({ param, value: _value, op: 'a' });\n });\n }\n else {\n updates.push({ param, value: value, op: 'a' });\n }\n });\n return this.clone(updates);\n }\n /**\n * Replaces the value for a parameter.\n * @param param The parameter name.\n * @param value The new value.\n * @return A new body with the new value.\n */\n set(param, value) {\n return this.clone({ param, value, op: 's' });\n }\n /**\n * Removes a given value or all values from a parameter.\n * @param param The parameter name.\n * @param value The value to remove, if provided.\n * @return A new body with the given value removed, or with all values\n * removed if no value is specified.\n */\n delete(param, value) {\n return this.clone({ param, value, op: 'd' });\n }\n /**\n * Serializes the body to an encoded string, where key-value pairs (separated by `=`) are\n * separated by `&`s.\n */\n toString() {\n this.init();\n return this.keys()\n .map(key => {\n const eKey = this.encoder.encodeKey(key);\n // `a: ['1']` produces `'a=1'`\n // `b: []` produces `''`\n // `c: ['1', '2']` produces `'c=1&c=2'`\n return this.map.get(key).map(value => eKey + '=' + this.encoder.encodeValue(value))\n .join('&');\n })\n // filter out empty values because `b: []` produces `''`\n // which results in `a=1&&c=1&c=2` instead of `a=1&c=1&c=2` if we don't\n .filter(param => param !== '')\n .join('&');\n }\n clone(update) {\n const clone = new HttpParams({ encoder: this.encoder });\n clone.cloneFrom = this.cloneFrom || this;\n clone.updates = (this.updates || []).concat(update);\n return clone;\n }\n init() {\n if (this.map === null) {\n this.map = new Map();\n }\n if (this.cloneFrom !== null) {\n this.cloneFrom.init();\n this.cloneFrom.keys().forEach(key => this.map.set(key, this.cloneFrom.map.get(key)));\n this.updates.forEach(update => {\n switch (update.op) {\n case 'a':\n case 's':\n const base = (update.op === 'a' ? this.map.get(update.param) : undefined) || [];\n base.push(valueToString(update.value));\n this.map.set(update.param, base);\n break;\n case 'd':\n if (update.value !== undefined) {\n let base = this.map.get(update.param) || [];\n const idx = base.indexOf(valueToString(update.value));\n if (idx !== -1) {\n base.splice(idx, 1);\n }\n if (base.length > 0) {\n this.map.set(update.param, base);\n }\n else {\n this.map.delete(update.param);\n }\n }\n else {\n this.map.delete(update.param);\n break;\n }\n }\n });\n this.cloneFrom = this.updates = null;\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A token used to manipulate and access values stored in `HttpContext`.\n *\n * @publicApi\n */\nclass HttpContextToken {\n constructor(defaultValue) {\n this.defaultValue = defaultValue;\n }\n}\n/**\n * Http context stores arbitrary user defined values and ensures type safety without\n * actually knowing the types. It is backed by a `Map` and guarantees that keys do not clash.\n *\n * This context is mutable and is shared between cloned requests unless explicitly specified.\n *\n * @usageNotes\n *\n * ### Usage Example\n *\n * ```typescript\n * // inside cache.interceptors.ts\n * export const IS_CACHE_ENABLED = new HttpContextToken(() => false);\n *\n * export class CacheInterceptor implements HttpInterceptor {\n *\n * intercept(req: HttpRequest, delegate: HttpHandler): Observable> {\n * if (req.context.get(IS_CACHE_ENABLED) === true) {\n * return ...;\n * }\n * return delegate.handle(req);\n * }\n * }\n *\n * // inside a service\n *\n * this.httpClient.get('/api/weather', {\n * context: new HttpContext().set(IS_CACHE_ENABLED, true)\n * }).subscribe(...);\n * ```\n *\n * @publicApi\n */\nclass HttpContext {\n constructor() {\n this.map = new Map();\n }\n /**\n * Store a value in the context. If a value is already present it will be overwritten.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n * @param value The value to store.\n *\n * @returns A reference to itself for easy chaining.\n */\n set(token, value) {\n this.map.set(token, value);\n return this;\n }\n /**\n * Retrieve the value associated with the given token.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n *\n * @returns The stored value or default if one is defined.\n */\n get(token) {\n if (!this.map.has(token)) {\n this.map.set(token, token.defaultValue());\n }\n return this.map.get(token);\n }\n /**\n * Delete the value associated with the given token.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n *\n * @returns A reference to itself for easy chaining.\n */\n delete(token) {\n this.map.delete(token);\n return this;\n }\n /**\n * @returns a list of tokens currently stored in the context.\n */\n keys() {\n return this.map.keys();\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Determine whether the given HTTP method may include a body.\n */\nfunction mightHaveBody(method) {\n switch (method) {\n case 'DELETE':\n case 'GET':\n case 'HEAD':\n case 'OPTIONS':\n case 'JSONP':\n return false;\n default:\n return true;\n }\n}\n/**\n * Safely assert whether the given value is an ArrayBuffer.\n *\n * In some execution environments ArrayBuffer is not defined.\n */\nfunction isArrayBuffer(value) {\n return typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer;\n}\n/**\n * Safely assert whether the given value is a Blob.\n *\n * In some execution environments Blob is not defined.\n */\nfunction isBlob(value) {\n return typeof Blob !== 'undefined' && value instanceof Blob;\n}\n/**\n * Safely assert whether the given value is a FormData instance.\n *\n * In some execution environments FormData is not defined.\n */\nfunction isFormData(value) {\n return typeof FormData !== 'undefined' && value instanceof FormData;\n}\n/**\n * Safely assert whether the given value is a URLSearchParams instance.\n *\n * In some execution environments URLSearchParams is not defined.\n */\nfunction isUrlSearchParams(value) {\n return typeof URLSearchParams !== 'undefined' && value instanceof URLSearchParams;\n}\n/**\n * An outgoing HTTP request with an optional typed body.\n *\n * `HttpRequest` represents an outgoing request, including URL, method,\n * headers, body, and other request configuration options. Instances should be\n * assumed to be immutable. To modify a `HttpRequest`, the `clone`\n * method should be used.\n *\n * @publicApi\n */\nclass HttpRequest {\n constructor(method, url, third, fourth) {\n this.url = url;\n /**\n * The request body, or `null` if one isn't set.\n *\n * Bodies are not enforced to be immutable, as they can include a reference to any\n * user-defined data type. However, interceptors should take care to preserve\n * idempotence by treating them as such.\n */\n this.body = null;\n /**\n * Whether this request should be made in a way that exposes progress events.\n *\n * Progress events are expensive (change detection runs on each event) and so\n * they should only be requested if the consumer intends to monitor them.\n */\n this.reportProgress = false;\n /**\n * Whether this request should be sent with outgoing credentials (cookies).\n */\n this.withCredentials = false;\n /**\n * The expected response type of the server.\n *\n * This is used to parse the response appropriately before returning it to\n * the requestee.\n */\n this.responseType = 'json';\n this.method = method.toUpperCase();\n // Next, need to figure out which argument holds the HttpRequestInit\n // options, if any.\n let options;\n // Check whether a body argument is expected. The only valid way to omit\n // the body argument is to use a known no-body method like GET.\n if (mightHaveBody(this.method) || !!fourth) {\n // Body is the third argument, options are the fourth.\n this.body = (third !== undefined) ? third : null;\n options = fourth;\n }\n else {\n // No body required, options are the third argument. The body stays null.\n options = third;\n }\n // If options have been passed, interpret them.\n if (options) {\n // Normalize reportProgress and withCredentials.\n this.reportProgress = !!options.reportProgress;\n this.withCredentials = !!options.withCredentials;\n // Override default response type of 'json' if one is provided.\n if (!!options.responseType) {\n this.responseType = options.responseType;\n }\n // Override headers if they're provided.\n if (!!options.headers) {\n this.headers = options.headers;\n }\n if (!!options.context) {\n this.context = options.context;\n }\n if (!!options.params) {\n this.params = options.params;\n }\n }\n // If no headers have been passed in, construct a new HttpHeaders instance.\n if (!this.headers) {\n this.headers = new HttpHeaders();\n }\n // If no context have been passed in, construct a new HttpContext instance.\n if (!this.context) {\n this.context = new HttpContext();\n }\n // If no parameters have been passed in, construct a new HttpUrlEncodedParams instance.\n if (!this.params) {\n this.params = new HttpParams();\n this.urlWithParams = url;\n }\n else {\n // Encode the parameters to a string in preparation for inclusion in the URL.\n const params = this.params.toString();\n if (params.length === 0) {\n // No parameters, the visible URL is just the URL given at creation time.\n this.urlWithParams = url;\n }\n else {\n // Does the URL already have query parameters? Look for '?'.\n const qIdx = url.indexOf('?');\n // There are 3 cases to handle:\n // 1) No existing parameters -> append '?' followed by params.\n // 2) '?' exists and is followed by existing query string ->\n // append '&' followed by params.\n // 3) '?' exists at the end of the url -> append params directly.\n // This basically amounts to determining the character, if any, with\n // which to join the URL and parameters.\n const sep = qIdx === -1 ? '?' : (qIdx < url.length - 1 ? '&' : '');\n this.urlWithParams = url + sep + params;\n }\n }\n }\n /**\n * Transform the free-form body into a serialized format suitable for\n * transmission to the server.\n */\n serializeBody() {\n // If no body is present, no need to serialize it.\n if (this.body === null) {\n return null;\n }\n // Check whether the body is already in a serialized form. If so,\n // it can just be returned directly.\n if (isArrayBuffer(this.body) || isBlob(this.body) || isFormData(this.body) ||\n isUrlSearchParams(this.body) || typeof this.body === 'string') {\n return this.body;\n }\n // Check whether the body is an instance of HttpUrlEncodedParams.\n if (this.body instanceof HttpParams) {\n return this.body.toString();\n }\n // Check whether the body is an object or array, and serialize with JSON if so.\n if (typeof this.body === 'object' || typeof this.body === 'boolean' ||\n Array.isArray(this.body)) {\n return JSON.stringify(this.body);\n }\n // Fall back on toString() for everything else.\n return this.body.toString();\n }\n /**\n * Examine the body and attempt to infer an appropriate MIME type\n * for it.\n *\n * If no such type can be inferred, this method will return `null`.\n */\n detectContentTypeHeader() {\n // An empty body has no content type.\n if (this.body === null) {\n return null;\n }\n // FormData bodies rely on the browser's content type assignment.\n if (isFormData(this.body)) {\n return null;\n }\n // Blobs usually have their own content type. If it doesn't, then\n // no type can be inferred.\n if (isBlob(this.body)) {\n return this.body.type || null;\n }\n // Array buffers have unknown contents and thus no type can be inferred.\n if (isArrayBuffer(this.body)) {\n return null;\n }\n // Technically, strings could be a form of JSON data, but it's safe enough\n // to assume they're plain strings.\n if (typeof this.body === 'string') {\n return 'text/plain';\n }\n // `HttpUrlEncodedParams` has its own content-type.\n if (this.body instanceof HttpParams) {\n return 'application/x-www-form-urlencoded;charset=UTF-8';\n }\n // Arrays, objects, boolean and numbers will be encoded as JSON.\n if (typeof this.body === 'object' || typeof this.body === 'number' ||\n typeof this.body === 'boolean') {\n return 'application/json';\n }\n // No type could be inferred.\n return null;\n }\n clone(update = {}) {\n var _a;\n // For method, url, and responseType, take the current value unless\n // it is overridden in the update hash.\n const method = update.method || this.method;\n const url = update.url || this.url;\n const responseType = update.responseType || this.responseType;\n // The body is somewhat special - a `null` value in update.body means\n // whatever current body is present is being overridden with an empty\n // body, whereas an `undefined` value in update.body implies no\n // override.\n const body = (update.body !== undefined) ? update.body : this.body;\n // Carefully handle the boolean options to differentiate between\n // `false` and `undefined` in the update args.\n const withCredentials = (update.withCredentials !== undefined) ? update.withCredentials : this.withCredentials;\n const reportProgress = (update.reportProgress !== undefined) ? update.reportProgress : this.reportProgress;\n // Headers and params may be appended to if `setHeaders` or\n // `setParams` are used.\n let headers = update.headers || this.headers;\n let params = update.params || this.params;\n // Pass on context if needed\n const context = (_a = update.context) !== null && _a !== void 0 ? _a : this.context;\n // Check whether the caller has asked to add headers.\n if (update.setHeaders !== undefined) {\n // Set every requested header.\n headers =\n Object.keys(update.setHeaders)\n .reduce((headers, name) => headers.set(name, update.setHeaders[name]), headers);\n }\n // Check whether the caller has asked to set params.\n if (update.setParams) {\n // Set every requested param.\n params = Object.keys(update.setParams)\n .reduce((params, param) => params.set(param, update.setParams[param]), params);\n }\n // Finally, construct the new HttpRequest using the pieces from above.\n return new HttpRequest(method, url, body, {\n params,\n headers,\n context,\n reportProgress,\n responseType,\n withCredentials,\n });\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Type enumeration for the different kinds of `HttpEvent`.\n *\n * @publicApi\n */\nvar HttpEventType;\n(function (HttpEventType) {\n /**\n * The request was sent out over the wire.\n */\n HttpEventType[HttpEventType[\"Sent\"] = 0] = \"Sent\";\n /**\n * An upload progress event was received.\n */\n HttpEventType[HttpEventType[\"UploadProgress\"] = 1] = \"UploadProgress\";\n /**\n * The response status code and headers were received.\n */\n HttpEventType[HttpEventType[\"ResponseHeader\"] = 2] = \"ResponseHeader\";\n /**\n * A download progress event was received.\n */\n HttpEventType[HttpEventType[\"DownloadProgress\"] = 3] = \"DownloadProgress\";\n /**\n * The full response including the body was received.\n */\n HttpEventType[HttpEventType[\"Response\"] = 4] = \"Response\";\n /**\n * A custom event from an interceptor or a backend.\n */\n HttpEventType[HttpEventType[\"User\"] = 5] = \"User\";\n})(HttpEventType || (HttpEventType = {}));\n/**\n * Base class for both `HttpResponse` and `HttpHeaderResponse`.\n *\n * @publicApi\n */\nclass HttpResponseBase {\n /**\n * Super-constructor for all responses.\n *\n * The single parameter accepted is an initialization hash. Any properties\n * of the response passed there will override the default values.\n */\n constructor(init, defaultStatus = 200 /* Ok */, defaultStatusText = 'OK') {\n // If the hash has values passed, use them to initialize the response.\n // Otherwise use the default values.\n this.headers = init.headers || new HttpHeaders();\n this.status = init.status !== undefined ? init.status : defaultStatus;\n this.statusText = init.statusText || defaultStatusText;\n this.url = init.url || null;\n // Cache the ok value to avoid defining a getter.\n this.ok = this.status >= 200 && this.status < 300;\n }\n}\n/**\n * A partial HTTP response which only includes the status and header data,\n * but no response body.\n *\n * `HttpHeaderResponse` is a `HttpEvent` available on the response\n * event stream, only when progress events are requested.\n *\n * @publicApi\n */\nclass HttpHeaderResponse extends HttpResponseBase {\n /**\n * Create a new `HttpHeaderResponse` with the given parameters.\n */\n constructor(init = {}) {\n super(init);\n this.type = HttpEventType.ResponseHeader;\n }\n /**\n * Copy this `HttpHeaderResponse`, overriding its contents with the\n * given parameter hash.\n */\n clone(update = {}) {\n // Perform a straightforward initialization of the new HttpHeaderResponse,\n // overriding the current parameters with new ones if given.\n return new HttpHeaderResponse({\n headers: update.headers || this.headers,\n status: update.status !== undefined ? update.status : this.status,\n statusText: update.statusText || this.statusText,\n url: update.url || this.url || undefined,\n });\n }\n}\n/**\n * A full HTTP response, including a typed response body (which may be `null`\n * if one was not returned).\n *\n * `HttpResponse` is a `HttpEvent` available on the response event\n * stream.\n *\n * @publicApi\n */\nclass HttpResponse extends HttpResponseBase {\n /**\n * Construct a new `HttpResponse`.\n */\n constructor(init = {}) {\n super(init);\n this.type = HttpEventType.Response;\n this.body = init.body !== undefined ? init.body : null;\n }\n clone(update = {}) {\n return new HttpResponse({\n body: (update.body !== undefined) ? update.body : this.body,\n headers: update.headers || this.headers,\n status: (update.status !== undefined) ? update.status : this.status,\n statusText: update.statusText || this.statusText,\n url: update.url || this.url || undefined,\n });\n }\n}\n/**\n * A response that represents an error or failure, either from a\n * non-successful HTTP status, an error while executing the request,\n * or some other failure which occurred during the parsing of the response.\n *\n * Any error returned on the `Observable` response stream will be\n * wrapped in an `HttpErrorResponse` to provide additional context about\n * the state of the HTTP layer when the error occurred. The error property\n * will contain either a wrapped Error object or the error response returned\n * from the server.\n *\n * @publicApi\n */\nclass HttpErrorResponse extends HttpResponseBase {\n constructor(init) {\n // Initialize with a default status of 0 / Unknown Error.\n super(init, 0, 'Unknown Error');\n this.name = 'HttpErrorResponse';\n /**\n * Errors are never okay, even when the status code is in the 2xx success range.\n */\n this.ok = false;\n // If the response was successful, then this was a parse error. Otherwise, it was\n // a protocol-level failure of some sort. Either the request failed in transit\n // or the server returned an unsuccessful status code.\n if (this.status >= 200 && this.status < 300) {\n this.message = `Http failure during parsing for ${init.url || '(unknown url)'}`;\n }\n else {\n this.message = `Http failure response for ${init.url || '(unknown url)'}: ${init.status} ${init.statusText}`;\n }\n this.error = init.error || null;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Constructs an instance of `HttpRequestOptions` from a source `HttpMethodOptions` and\n * the given `body`. This function clones the object and adds the body.\n *\n * Note that the `responseType` *options* value is a String that identifies the\n * single data type of the response.\n * A single overload version of the method handles each response type.\n * The value of `responseType` cannot be a union, as the combined signature could imply.\n *\n */\nfunction addBody(options, body) {\n return {\n body,\n headers: options.headers,\n context: options.context,\n observe: options.observe,\n params: options.params,\n reportProgress: options.reportProgress,\n responseType: options.responseType,\n withCredentials: options.withCredentials,\n };\n}\n/**\n * Performs HTTP requests.\n * This service is available as an injectable class, with methods to perform HTTP requests.\n * Each request method has multiple signatures, and the return type varies based on\n * the signature that is called (mainly the values of `observe` and `responseType`).\n *\n * Note that the `responseType` *options* value is a String that identifies the\n * single data type of the response.\n * A single overload version of the method handles each response type.\n * The value of `responseType` cannot be a union, as the combined signature could imply.\n\n *\n * @usageNotes\n * Sample HTTP requests for the [Tour of Heroes](/tutorial/toh-pt0) application.\n *\n * ### HTTP Request Example\n *\n * ```\n * // GET heroes whose name contains search term\n * searchHeroes(term: string): observable{\n *\n * const params = new HttpParams({fromString: 'name=term'});\n * return this.httpClient.request('GET', this.heroesUrl, {responseType:'json', params});\n * }\n * ```\n *\n * Alternatively, the parameter string can be used without invoking HttpParams\n * by directly joining to the URL.\n * ```\n * this.httpClient.request('GET', this.heroesUrl + '?' + 'name=term', {responseType:'json'});\n * ```\n *\n *\n * ### JSONP Example\n * ```\n * requestJsonp(url, callback = 'callback') {\n * return this.httpClient.jsonp(this.heroesURL, callback);\n * }\n * ```\n *\n * ### PATCH Example\n * ```\n * // PATCH one of the heroes' name\n * patchHero (id: number, heroName: string): Observable<{}> {\n * const url = `${this.heroesUrl}/${id}`; // PATCH api/heroes/42\n * return this.httpClient.patch(url, {name: heroName}, httpOptions)\n * .pipe(catchError(this.handleError('patchHero')));\n * }\n * ```\n *\n * @see [HTTP Guide](guide/http)\n * @see [HTTP Request](api/common/http/HttpRequest)\n *\n * @publicApi\n */\nclass HttpClient {\n constructor(handler) {\n this.handler = handler;\n }\n /**\n * Constructs an observable for a generic HTTP request that, when subscribed,\n * fires the request through the chain of registered interceptors and on to the\n * server.\n *\n * You can pass an `HttpRequest` directly as the only parameter. In this case,\n * the call returns an observable of the raw `HttpEvent` stream.\n *\n * Alternatively you can pass an HTTP method as the first parameter,\n * a URL string as the second, and an options hash containing the request body as the third.\n * See `addBody()`. In this case, the specified `responseType` and `observe` options determine the\n * type of returned observable.\n * * The `responseType` value determines how a successful response body is parsed.\n * * If `responseType` is the default `json`, you can pass a type interface for the resulting\n * object as a type parameter to the call.\n *\n * The `observe` value determines the return type, according to what you are interested in\n * observing.\n * * An `observe` value of events returns an observable of the raw `HttpEvent` stream, including\n * progress events by default.\n * * An `observe` value of response returns an observable of `HttpResponse`,\n * where the `T` parameter depends on the `responseType` and any optionally provided type\n * parameter.\n * * An `observe` value of body returns an observable of `` with the same `T` body type.\n *\n */\n request(first, url, options = {}) {\n let req;\n // First, check whether the primary argument is an instance of `HttpRequest`.\n if (first instanceof HttpRequest) {\n // It is. The other arguments must be undefined (per the signatures) and can be\n // ignored.\n req = first;\n }\n else {\n // It's a string, so it represents a URL. Construct a request based on it,\n // and incorporate the remaining arguments (assuming `GET` unless a method is\n // provided.\n // Figure out the headers.\n let headers = undefined;\n if (options.headers instanceof HttpHeaders) {\n headers = options.headers;\n }\n else {\n headers = new HttpHeaders(options.headers);\n }\n // Sort out parameters.\n let params = undefined;\n if (!!options.params) {\n if (options.params instanceof HttpParams) {\n params = options.params;\n }\n else {\n params = new HttpParams({ fromObject: options.params });\n }\n }\n // Construct the request.\n req = new HttpRequest(first, url, (options.body !== undefined ? options.body : null), {\n headers,\n context: options.context,\n params,\n reportProgress: options.reportProgress,\n // By default, JSON is assumed to be returned for all calls.\n responseType: options.responseType || 'json',\n withCredentials: options.withCredentials,\n });\n }\n // Start with an Observable.of() the initial request, and run the handler (which\n // includes all interceptors) inside a concatMap(). This way, the handler runs\n // inside an Observable chain, which causes interceptors to be re-run on every\n // subscription (this also makes retries re-run the handler, including interceptors).\n const events$ = of(req).pipe(concatMap((req) => this.handler.handle(req)));\n // If coming via the API signature which accepts a previously constructed HttpRequest,\n // the only option is to get the event stream. Otherwise, return the event stream if\n // that is what was requested.\n if (first instanceof HttpRequest || options.observe === 'events') {\n return events$;\n }\n // The requested stream contains either the full response or the body. In either\n // case, the first step is to filter the event stream to extract a stream of\n // responses(s).\n const res$ = events$.pipe(filter((event) => event instanceof HttpResponse));\n // Decide which stream to return.\n switch (options.observe || 'body') {\n case 'body':\n // The requested stream is the body. Map the response stream to the response\n // body. This could be done more simply, but a misbehaving interceptor might\n // transform the response body into a different format and ignore the requested\n // responseType. Guard against this by validating that the response is of the\n // requested type.\n switch (req.responseType) {\n case 'arraybuffer':\n return res$.pipe(map((res) => {\n // Validate that the body is an ArrayBuffer.\n if (res.body !== null && !(res.body instanceof ArrayBuffer)) {\n throw new Error('Response is not an ArrayBuffer.');\n }\n return res.body;\n }));\n case 'blob':\n return res$.pipe(map((res) => {\n // Validate that the body is a Blob.\n if (res.body !== null && !(res.body instanceof Blob)) {\n throw new Error('Response is not a Blob.');\n }\n return res.body;\n }));\n case 'text':\n return res$.pipe(map((res) => {\n // Validate that the body is a string.\n if (res.body !== null && typeof res.body !== 'string') {\n throw new Error('Response is not a string.');\n }\n return res.body;\n }));\n case 'json':\n default:\n // No validation needed for JSON responses, as they can be of any type.\n return res$.pipe(map((res) => res.body));\n }\n case 'response':\n // The response stream was requested directly, so return it.\n return res$;\n default:\n // Guard against new future observe types being added.\n throw new Error(`Unreachable: unhandled observe type ${options.observe}}`);\n }\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `DELETE` request to execute on the server. See the individual overloads for\n * details on the return type.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n */\n delete(url, options = {}) {\n return this.request('DELETE', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `GET` request to execute on the server. See the individual overloads for\n * details on the return type.\n */\n get(url, options = {}) {\n return this.request('GET', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `HEAD` request to execute on the server. The `HEAD` method returns\n * meta information about the resource without transferring the\n * resource itself. See the individual overloads for\n * details on the return type.\n */\n head(url, options = {}) {\n return this.request('HEAD', url, options);\n }\n /**\n * Constructs an `Observable` that, when subscribed, causes a request with the special method\n * `JSONP` to be dispatched via the interceptor pipeline.\n * The [JSONP pattern](https://en.wikipedia.org/wiki/JSONP) works around limitations of certain\n * API endpoints that don't support newer,\n * and preferable [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) protocol.\n * JSONP treats the endpoint API as a JavaScript file and tricks the browser to process the\n * requests even if the API endpoint is not located on the same domain (origin) as the client-side\n * application making the request.\n * The endpoint API must support JSONP callback for JSONP requests to work.\n * The resource API returns the JSON response wrapped in a callback function.\n * You can pass the callback function name as one of the query parameters.\n * Note that JSONP requests can only be used with `GET` requests.\n *\n * @param url The resource URL.\n * @param callbackParam The callback function name.\n *\n */\n jsonp(url, callbackParam) {\n return this.request('JSONP', url, {\n params: new HttpParams().append(callbackParam, 'JSONP_CALLBACK'),\n observe: 'body',\n responseType: 'json',\n });\n }\n /**\n * Constructs an `Observable` that, when subscribed, causes the configured\n * `OPTIONS` request to execute on the server. This method allows the client\n * to determine the supported HTTP methods and other capabilities of an endpoint,\n * without implying a resource action. See the individual overloads for\n * details on the return type.\n */\n options(url, options = {}) {\n return this.request('OPTIONS', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `PATCH` request to execute on the server. See the individual overloads for\n * details on the return type.\n */\n patch(url, body, options = {}) {\n return this.request('PATCH', url, addBody(options, body));\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `POST` request to execute on the server. The server responds with the location of\n * the replaced resource. See the individual overloads for\n * details on the return type.\n */\n post(url, body, options = {}) {\n return this.request('POST', url, addBody(options, body));\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `PUT` request to execute on the server. The `PUT` method replaces an existing resource\n * with a new set of values.\n * See the individual overloads for details on the return type.\n */\n put(url, body, options = {}) {\n return this.request('PUT', url, addBody(options, body));\n }\n}\nHttpClient.ɵfac = function HttpClient_Factory(t) { return new (t || HttpClient)(ɵngcc0.ɵɵinject(HttpHandler)); };\nHttpClient.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: HttpClient, factory: HttpClient.ɵfac });\nHttpClient.ctorParameters = () => [\n { type: HttpHandler }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(HttpClient, [{\n type: Injectable\n }], function () { return [{ type: HttpHandler }]; }, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * `HttpHandler` which applies an `HttpInterceptor` to an `HttpRequest`.\n *\n *\n */\nclass HttpInterceptorHandler {\n constructor(next, interceptor) {\n this.next = next;\n this.interceptor = interceptor;\n }\n handle(req) {\n return this.interceptor.intercept(req, this.next);\n }\n}\n/**\n * A multi-provider token that represents the array of registered\n * `HttpInterceptor` objects.\n *\n * @publicApi\n */\nconst HTTP_INTERCEPTORS = new InjectionToken('HTTP_INTERCEPTORS');\nclass NoopInterceptor {\n intercept(req, next) {\n return next.handle(req);\n }\n}\nNoopInterceptor.ɵfac = function NoopInterceptor_Factory(t) { return new (t || NoopInterceptor)(); };\nNoopInterceptor.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NoopInterceptor, factory: NoopInterceptor.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NoopInterceptor, [{\n type: Injectable\n }], null, null); })();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Every request made through JSONP needs a callback name that's unique across the\n// whole page. Each request is assigned an id and the callback name is constructed\n// from that. The next id to be assigned is tracked in a global variable here that\n// is shared among all applications on the page.\nlet nextRequestId = 0;\n// Error text given when a JSONP script is injected, but doesn't invoke the callback\n// passed in its URL.\nconst JSONP_ERR_NO_CALLBACK = 'JSONP injected script did not invoke callback.';\n// Error text given when a request is passed to the JsonpClientBackend that doesn't\n// have a request method JSONP.\nconst JSONP_ERR_WRONG_METHOD = 'JSONP requests must use JSONP request method.';\nconst JSONP_ERR_WRONG_RESPONSE_TYPE = 'JSONP requests must use Json response type.';\n/**\n * DI token/abstract type representing a map of JSONP callbacks.\n *\n * In the browser, this should always be the `window` object.\n *\n *\n */\nclass JsonpCallbackContext {\n}\n/**\n * Processes an `HttpRequest` with the JSONP method,\n * by performing JSONP style requests.\n * @see `HttpHandler`\n * @see `HttpXhrBackend`\n *\n * @publicApi\n */\nclass JsonpClientBackend {\n constructor(callbackMap, document) {\n this.callbackMap = callbackMap;\n this.document = document;\n /**\n * A resolved promise that can be used to schedule microtasks in the event handlers.\n */\n this.resolvedPromise = Promise.resolve();\n }\n /**\n * Get the name of the next callback method, by incrementing the global `nextRequestId`.\n */\n nextCallback() {\n return `ng_jsonp_callback_${nextRequestId++}`;\n }\n /**\n * Processes a JSONP request and returns an event stream of the results.\n * @param req The request object.\n * @returns An observable of the response events.\n *\n */\n handle(req) {\n // Firstly, check both the method and response type. If either doesn't match\n // then the request was improperly routed here and cannot be handled.\n if (req.method !== 'JSONP') {\n throw new Error(JSONP_ERR_WRONG_METHOD);\n }\n else if (req.responseType !== 'json') {\n throw new Error(JSONP_ERR_WRONG_RESPONSE_TYPE);\n }\n // Everything else happens inside the Observable boundary.\n return new Observable((observer) => {\n // The first step to make a request is to generate the callback name, and replace the\n // callback placeholder in the URL with the name. Care has to be taken here to ensure\n // a trailing &, if matched, gets inserted back into the URL in the correct place.\n const callback = this.nextCallback();\n const url = req.urlWithParams.replace(/=JSONP_CALLBACK(&|$)/, `=${callback}$1`);\n // Construct the